vue2.* 事件结合双向数据绑定、模块化以及封装Storage实现todolist 待办事项 已经完成 和进行中持久化 06
ceshi.vue
<template>
<div id="app">
<input type='text' v-model='todo' @keydown="doAdd($event)" />
<button @click="doAdd($event)">+增加</button>
<br>
<hr>
<br>
<h2>进行中</h2>
<ul>
<li v-for="(item,key) in list" v-if="!item.checked">
<input type="checkbox" @change="saveList()" v-model="item.checked">{{item.title}} --- <button @click="removeData(key)">删除</button>
</li>
</ul>
<br>
<br>
<h2>已完成</h2>
<ul class="finish">
<li v-for="(item,key) in list" v-if="item.checked">
<input type="checkbox" @change="saveList()" v-model="item.checked">{{item.title}} --- <button @click="removeData(key)">删除</button>
</li>
</ul> <br>
<br>
<button @click="getList()">获取list的值</button> </div>
</template> <script>
import storage from './model/storage.js';
console.log(storage);
export default {
data () {/*业务逻辑里面定义的数据*/
return {
todo:'',
list:[]
}
},
methods:{/*方法*/
doAdd(e){ if(e.keyCode!==undefined){
if(e.keyCode==13){
//1、获取文本框输入的值2、把文本框的值push到list里面
this.list.push({
title:this.todo,
checked:false
});
this.todo = ''
} //localStorage.setItem('key',JSON.stringify(this.list))
storage.set('list',this.list) }else{
//1、获取文本框输入的值2、把文本框的值push到list里面
this.list.push({
title:this.todo,
checked:false
});
this.todo = '';
//localStorage.setItem('key',JSON.stringify(this.list))
storage.set('list',this.list)
} return false; },
removeData(key){
/*
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
*/
this.list.splice(key,1);
//localStorage.setItem('list',JSON.stringify(this.list))
storage.set('list',this.list)
},
getList(){
console.log(this.list)
},
saveList(){
//localStorage.setItem('list',JSON.stringify(this.list))
storage.set('list',this.list)
}
},
mounted(){/* 生命周期函数 vue页面刷新就会触发的方法 */
//var list = JSON.parse(localStorage.getItem('list'));
var list = storage.get('list')
//判断是否存在
if(list){
this.list = list;
} }
}
</script> <style>
.finish {
li {background:#eee;}
}
</style>
model/storage.js
//封装操作local storage本地存储的方法 模块化的文件
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;
vue2.* 事件结合双向数据绑定、模块化以及封装Storage实现todolist 待办事项 已经完成 和进行中持久化 06的更多相关文章
- vue.js--基础 事件结合双向数据绑定实现todolist 待办事项 已经完成 和进行中,键盘事件
<template> <div id="app"> <h1>{{ msg }}</h1> <input type=" ...
- Vue 事件结合双向数据绑定实现todolist 待办事项 已经完成 和进行中
<template> <div id="app"> <input type="text" v-model='todo' @keyd ...
- vue2组件之间双向数据绑定问题
最近在使用element-ui的dialog组件二次封装成独立组件使用时,子组件需要将关闭dialog状态返回给父组件,简单的说就是要实现父子组件之间的数据双向绑定问题. 大致代码如下: 1,父组件 ...
- Vue绑定事件,双向数据绑定,只是循环没那么简单
v-on对象处理 <p @mouseover = "doTish" @mouseout = "doThat"> 对象形式 </p> &l ...
- Vue: 一个简单的Vue2.0 v-model双向数据绑定的实现,含源代码,小白也能看懂
首先说一下原理吧 View层(dom元素)的变动如何响应到Model层(Js变量)呢? 通过监听元素的input事件来动态的改变js变量的值,实际上不是改变的js变量的值,而是改变的js变量的gett ...
- vue.js--基础 事件结合双向数据绑定实现todolist,增加和删除功能
原理很简单,写一个input框,定义一个空的list,当在input中增加数据时,就往list中添加数据,然后在循环这个list的数据,删除数据就是调用list中的splice <templat ...
- vue 事件结合双向数据绑定实现todolist
<template> <div id="app"> <input type="text" v-model='todo' /> ...
- vue模块化以及封装Storage组件实现保存搜索的历史记录
<template> <div id="app"> <input type="text" v-model='todo' @keyd ...
- angularjs探秘<四> 双向数据绑定
双向数据绑定是angularjs的一大特性,这个特性在实际开发中省了不少事儿.之前第二篇提过数据绑定,这一篇从实际开发的案例中具体看下双向数据绑定的便捷. 首先看一个场景: 在 注册/登录 中经常遇到 ...
随机推荐
- Mac下显示和隐藏隐藏文件的命令
打开终端,输入: 1.defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件defaults write com. ...
- pch文件配置
配置.pch文件 刚上手 Xcode6 的人,总会发现之前在 6 之前常常会在“利用名-Prefix.pch”这个文件中来配置我们全局要用到的头文件,但是 xcode6 没有了,人家说,这类东西有时候 ...
- fzu 2139 久违的月赛之二
Problem 2139 久违的月赛之二 Accept: 42 Submit: 106Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- AutoFac在项目中应用的体会
AutoFac的工作原理就是:注册类并映射到接口,通过注入后返回相应实例化的类! 先来简单介绍下Autofac的使用 1.通过Nuget或代码安装autofac 安装autofac :ins ...
- 阿里云 CentOS7安装redis4.0.9并开启远程访问
1 安装redis编译的c环境 yum install gcc-c++ redis是c语言开发的,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境. 如果没有gcc环境,需要安装gcc ...
- 网鼎杯 pwn 记录
题目位置 https://gitee.com/hac425/blog_data/tree/master/wdb babyheap 通过分配和释放构建 2 个 fastbin 链 利用 show 功能, ...
- Centos 安装Dokuwiki
一.前言 DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.DokuWiki程序小巧而功能强大.灵活,适合中小团队和个人网站知识库的管理. 二.环境 在centos6 下安装apache ...
- Jmeter入门--断言(检查点)
断言是在请求的返回层面增加一层判断机制.因为请求成功,并不代表结果一定正确,因为此需要检查机制提高测试准确性. 1.响应断言 模式匹配规则: 包括:返回结果包括你指定的内容,支持正则匹配 例如: 响应 ...
- 转:c# 安装包制作
.net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...
- linux克隆机器
首先你要先点击你的虚拟机点击克隆: 然后执行这个 vim /etc/sysconfig/network-scripts/ifcfg-eth0 去这里修改这两行 然后注释了 然后再执行这个 > / ...