分享一个用vue写的todolist的待办事宜
通过数据的双向绑定,列表循环渲染和localstorage本地缓存完成。虽然是个简单的例子但是这里面包含的东西对vue的初学者来说还是挺多的。直接贴上代码吧<template><div id="app"><input type="text" v-model="todo"
·
通过数据的双向绑定,列表循环渲染和localstorage本地缓存完成。
虽然是个简单的例子但是这里面包含的东西对vue的初学者来说还是挺多的。
直接贴上代码吧
<template> <div id="app"> <input type="text" v-model="todo" @keydown="add($event)"> <button @click="add1()">增加</button> <h2>进行中</h2> <ul> <li v-for="(item,key) in list" v-if="!item.checked"> <input type="checkbox" v-model="item.checked" @change="savelist()"> <a>{{item.title}}</a> <button @click="aaa(key)">删除</button> </li> </ul> <h2>已完成</h2> <ul> <li v-for="(item,key) in list" v-if="item.checked"> <input type="checkbox" v-model="item.checked" @change="savelist()"> <a v-bind:class="{red:true}">{{item.title}}</a> <button @click="aaa(key)">删除</button> </li> </ul> </div> </template> <script> //export default 固定语法把这个组件暴露出去 //moedel里面封装了storage import storage from './model/storage.js'; export default { data () { return { ok:true, todo:"", list:[], } }, methods:{ add(e){ /*keyCode值为13为回车*/ if(e.keyCode===13){ this.list.push({ title:this.todo, checked:false }); this.todo=""; } /*缓存功能*/ storage.set('list',this.list); }, //单击回车事件 add1(){ /*keyCode值为13为回车*/ this.list.push({ title:this.todo, checked:false }); this.todo=""; storage.set('list',this.list); }, aaa(key){ this.list.splice(key,1) }, savelist(){ storage.set('list',this.list); } }, /*生命周期函数实现缓存页面刷新就触发*/ mounted(){ var list = storage.get('list'); if(list){ this.list = list; } } } </script> <style> .red{color:red} </style>
1.里面包括了v-model数据双向绑定,直接获取输入的内容。
2.然后放到list数组中通过v-for列表进行渲染呈现出来。
3.添加一个input的checked复选框,通过复选框的选中状态来给li的v-if进行赋值,当点击checkbox时checked值会改变,并且通过数据绑定同步到list,进而实现切换效果
4.给每个li加上一个v-on:click事件来删除不想要的事宜。
5.同时还给输入框加上单击回车键添加的功能提升用户体验。
6.页面刷新过后之前添加的就全部消失了;这里我们用localstorage本地缓存来存储数据,每一次添加保存和删除都保存一次。
这里还要用到vue的一个生命周期函数mounted,让存储的数据在页面加载时加载。(这里多次用到localstorage通过node.js将代码进行封装)
//封装本地存储方法,这是模块化文件 var storage={ set(key,value){ localStorage.setItem(key,JSON.stringify(value)) }, get(key){ return JSON.parse(localStorage.getItem(key)) }, remove(key){ localStorage.removeItem(key); } }; export default storage;
封装的函数放在
这是一个.vue的文件我们将这个称为一个vue的组件。和传统的jq dom操作相比,通过vue.js可以很方便的实现这样功能。
更多推荐
已为社区贡献28条内容
所有评论(0)