这个TodoList很简单,只包括此时日期的展现、todo项的展现以及todo项的添加。 这里是DEMO📃vue
先写一个最简易的不加样式的todolist:git
用<li></li>
标签存放todo项,里面包含一个checkbox
,一个todo项的内容的<span>
以及一个删除<span>
:github
<li v-for="list in lists">
<input type="checkbox"/>
<span>{{ list.text }}</span>
<button>删除</button>
</li>
复制代码
用input
输入框和button
按钮用于添加todo项:数组
<input type="text"/>
<button>添加</button>
复制代码
这个项目我把todo项的列表保存在一个数组里:浏览器
lists : [
//{
//id : 0
//text : '',
//finished : false
//}
]
复制代码
当写入事件并点击添加按钮的时候,用v-model
绑定input输入框输入内容、用@click
绑定一个方法用于添加事件:缓存
<input type="text" v-model="inputValue" @keyup.enter="addList"/>
<button @click="addList">添加</button>
addList(){//添加一个备忘
if(this.inputValue != ''){
this.lists.push({id : this.lists.length,text : this.inputValue,finished : false});
this.inputValue = '';
}
}
复制代码
删除按钮用@click
绑定deleteList方法:bash
button @click="deleteList(list)">delete</button>
deleteList(list){
this.lists.splice(this.lists.indexOf(list),1);
}
复制代码
这两块就是整个todo项目的核心,再加上日期模块:函数
建立一个钩子函数created()
,由于想要在渲染成视图以前就得到当前的日期。学习
一周七日,一年十二月,将这些对应的时间字符串归于数组里。ui
用new Date()得到本地的时间,而getDate()、getMonth()、getDay()能够提取出对应的多少号、第几个月(从0 计数)、星期几(星期天即0,星期一即6)。
再把得到的时间展现:
var weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var month = ['January ','February ','March ','April ','May ','June ','July ','August ','September ','October ','November ','December '];
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth(); //January is 0!
this.weekday = weekday[today.getDay()];
this.month = month[mm];
this.day = dd;
复制代码
最后再用CSS渲染一下,UI也变得好看啦🤞:
可是由于网页一旦刷新,我记录的内容就会跟着跑路,因此我看了红宝书,查阅发现localStorage能够持久保持客户端数据的一种方案,大部分浏览器会设置5MB的限制(Chrome和Safaris 2.5MB),不过想来也是够用了。重要的是数据会保留到经过JavaScript删除或者用户清除浏览器缓存。
localStorage储存键值对的数据,因此我打算储存整个lists数组,将其值用JSON.stringify()转换成字符串储存。
localStorage设置用setItem:
localStorage.setItem(key,JSON.stringify(val));
复制代码
取值用getItem:
localStorage.getItem(key);
复制代码
而后要用钩子函数created()
在渲染以前就得到localStorage的lists:
this.lists = myStorage.get('lists') || [];
//JSON字符串处理的缘由,我学习封装了getItem()和setItem()
function set(key,val){
localStorage.setItem(key,JSON.stringify(val));
}
function get(key){
return JSON.parse(localStorage.getItem(key));
}
复制代码
这样子localStorage就会保存个人记录,刷新和重启页面也不在怕啦hiahia
这就是我对vue.js和localStorage简单的学习应用, 完整的代码能够查看个人github😊