核心提示:vue-todoList代码实例templatep id=apph1{{title}}/h1//v-model 双向绑定input v-model=newItem v-on:keyup.enter=a...
vue-todoList代码实例
<template> <p id="app"> <h1>{{title}}</h1> //v-model 双向绑定 <input v-model='newItem' v-on:keyup.enter='addNew'> <ul> <li v-for='item in items' v-bind:class='{finished: item.isFinished}' v-on:click='toggleFinish(item)'> {{item.label}} </li> </ul> </p> </template> <script> import Store from './store' export defalut { data: function() { return { title: 'this is a todo list', newItem: '', items: Store.fetch() } }, methods: { 'toggleFinish': function(item) { item.isFinished = !item.isFinished }, 'addNew':function() { this.items.push({ label: this.newItem, isFinished: false}) this.newItem = ''; } }, //请注意此处监听的是items watch: { items: { handler: function(val, oldVal) { Store.save(val) }, //深度检索,为true时,当数组中的某个key值发生变化时也会被检索到 deep: true } } } </script> <style></style> //store.js const STORAGE_KEY = 'todos-vuejs' export defalut { fetch() { return JSON.parse(window.localStorage.getItem(STORAGE_KEY) || '[]') }, save(items) { window.localStorage.setItem(STORAGE_KEY, JSON.stringify(items)) } }