热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用vuejs实现一个todolist项目

用vue.js实现一个todolist项目:input输入框输入的值会呈现在下方,并且会保存在localStorage里面,而且下方的列表

用vue.js实现一个todolist项目:input输入框输入的值会呈现在下方,并且会保存在localStorage里面,而且下方的列表点击之后也会有变化:

完整代码:

App.vue

store.js:

const STORAGE_KEY='todos-vuejs'
export
default {fetch:function(){return JSON.parse(window.localStorage.getItem(STORAGE_KEY)||'[]');},save:function(items){window.localStorage.setItem(STORAGE_KEY,JSON.stringify(items))}
}

 

详细解析

ES6的写法:

export default {name: 'hello',data () {return {msg: 'Welcome to Your Vue.js App'}}
}

export default 和 export 区别:

  1.export与export default均可用于导出常量、函数、文件、模块等
  2.你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用
  3.在一个文件或模块中,export、import可以有多个,export default仅有一个
  4.通过export方式导出,在导入时要加{ },export default则不需要

1.export
//demo1.js
export const str = 'hello world'
export function f(a){
return a+1}
对应的导入方式:
//demo2.js
import { str, f } from 'demo1' //也可以分开写两次,导入的时候带花括号2.export default
//demo1.js
export default const str = 'hello world'
对应的导入方式:
//demo2.js
import str from 'demo1' //导入的时候没有花括号

当最简单导入的时候,这个值是将被认为是”入口”导出值。

在App.vue中完成项目编写:

组件布局将在这里设置,.vue文件将由vue-loader进行加载,.vue内同时包含html、css、js源码,使组件的独立,组件之间可以尽可能地解耦,便于开发维护

先看一个简单示例:只要isFinished为true就加下划线,false就不加下划线:

对于class的控制如上:如果是数组的话则可以渲染多个。

再进一步完成功能:点击没有下划线的li就会加下划线,有下划线就会去除下划线。

需要绑定事件:

  • for="item in items" v-bind:class="{finished:item.isFinished}" v-on:click="toggleFinish(item)">{{item.label}}
  • 还要添加方法toggleFinish():

    methods:{toggleFinish:function(item){item.isFinished = !item.isFinished}}

    将input输入的值添加到列表下面

    添加input:

    "newItem" v-on:keyup.enter="addNew" >

    data对象添加:

    newItem:""

    添加方法:

    //addNew:function(){
    // alert(this.newItem)
    // this.newItem="" //添加后加输入框清空
    //}

    addNew:function(){
    this.items.push({label:this.newItem,"isFinished":false })this.newItem=""
    }

    使用localStorage来存储

    使用store.js:

    const STORAGE_KEY='todos-vuejs'
    export
    default {fetch:function(){return JSON.parse(window.localStorage.getItem(STORAGE_KEY)||'[]');},save:function(items){window.localStorage.setItem(STORAGE_KEY,JSON.stringify(items))}
    }

    两个方法:一个设置,一个获取

    导入:

    import Store from './store'

    打印一下Store,console.log(Store),可以看到:

    由于加入代码中每次都需要添加还有删除等等,如果每次都用到store的方法,这就有点麻烦了,所以这里就要用到watch观察。

    watch:{items:{handler:function(val,oldVal){console.log(val,oldVal)},deep:true}},

    可以看到打印出:

    使用save()方法:

    watch:{items:{handler:function(items){Store.save(items)},deep:true}},

    一有变化就会触发。

    将fetch()方法也加进去:

     

     

    Vue.js计算属性和样式       --2017.03.07

    转:https://www.cnblogs.com/Chen-XiaoJun/p/6238137.html



    推荐阅读
    • 使用 Vuex 管理表单状态:当输入框失去焦点时自动恢复初始值 ... [详细]
    • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
    • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
    • 基于 Vue 和 Element UI 实现的简洁登录界面设计
      本文介绍了一种利用 Vue.js 和 Element UI 框架构建的简洁登录界面设计。该设计不仅注重用户体验,还确保了界面的美观性和易用性。通过合理的布局和组件配置,实现了高效、响应式的登录功能,适用于多种前端应用场景。 ... [详细]
    • 在Django中提交表单时遇到值错误问题如何解决?
      在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
    • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
      技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
    • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
    • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
    • 开机自启动的几种方式
      0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
    • 2.2 组件间父子通信机制详解
      2.2 组件间父子通信机制详解 ... [详细]
    • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
    • Python 序列图分割与可视化编程入门教程
      本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
    • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
    • 深入解析 Vue 中通过 $route.params 实现参数传递的方法与技巧
      本文深入探讨了在 Vue 框架中利用 `$route.params` 进行参数传递的方法和技巧。通过详细解析 `$route.params` 的工作机制及其与 `$route.query` 的区别,帮助开发者更好地理解和应用这一功能。文章不仅涵盖了基本的使用方法,还提供了实际案例和最佳实践,以便读者能够灵活运用这些技术,提升开发效率和代码质量。 ... [详细]
    • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
    author-avatar
    cf15ron
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有