vue实现本地存储添加删除修改功能

本文实例为大家分享了vue实现本地存储添加删除修改的具体代码,供大家参考,具体内容如下

实现功能:

输入的内容添加到正在进行列表中,

双击修改功能,

点击esc键,取消,还是之前的内容,

点击回车,修改成功,

修改框失焦时修改成功,

选中按钮时进入已完成列表,未选中时在正在进行中列表,

点击删除进行删除当行,

本地存储下次打开上次添加的还在

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<style type="text/css">

*{

padding: 0;margin: 0;

}

ul{

list-style: none;

}

li{

width: 220px;

height: 40px;

border: 1px solid gainsboro;

margin-top: 4px;

display: flex;

justify-content: space-between;

align-items: center;

background-color: #6CE26C;

}

.del{

margin-right: 5px;

border: none;

width: 20px;

height: 20px;

background-color: #008200;

}

</style>

</head>

<body>

<div id="app">

<!-- 过滤输入内容首尾空白符 -->

<!-- 回车事件 -->

<input type="text" v-model.trim="temp" @keyup.enter="additem()"/>

<!-- 获取正在进行的数量 -->

<h3>正在进行中{{undolist.length}}</h3>

<ul class="list">

<!-- 将正在进行的内容遍历显示出来 -->

<li class="item" v-for="item in undolist" :key="item.name">

<div class="">

<!-- 多选框为未选中false状态 -->

<input type="checkbox" v-model="item.done" />

<!-- 默认为state是0,当双击时state为1,内容赋给tempEdit-->

<span v-show="item.state==0" @dblclick="item.state=1;tempEdit=item.name">{{item.name}}</span>

<!-- input框内容为tempEdit的值,state=1时显示输入框,

点击esc时state为零隐藏,内容还是原来的值,不进行修改,

当回车时state为0就隐藏input框,将修改过得tempEdit,赋给item.name

当失焦时state为0就隐藏input框,将修改过得tempEdit,赋给item.name

-->

<input type="text" v-model="tempEdit" v-show="item.state==1"

@keyup.esc="item.state=0;tempEdit=item.name"

@keyup.enter="item.state=0;item.name=tempEdit"

@blur="item.state=0;item.name=tempEdit"

/>

</div>

<!-- 点击删除时删除其内容 -->

<button type="button" @click="removeitem(item)" class="del">X</button>

</li>

</ul>

<!-- 已完成数量 -->

<h3>已经完成{{doneList.length}}</h3>

<ul class="list">

<!-- 将已完成的内容遍历显示出来 -->

<li class="item" v-for="item in doneList" :key="item.name">

<div class="">

<!-- 多选框为选中true状态 -->

<input type="checkbox" v-model="item.done" />

<!-- 默认为state是0,当双击时state为1,内容赋给tempEdit-->

<span v-show="item.state==0" @dblclick="item.state=1;tempEdit=item.name">{{item.name}}</span>

<!-- input框内容为tempEdit的值,state=1时显示输入框,

点击esc时state为零隐藏,内容还是原来的值,不进行修改,

当回车时state为0就隐藏input框,将修改过得tempEdit,赋给item.name

当失焦时state为0就隐藏input框,将修改过得tempEdit,赋给item.name

-->

<input type="text" v-model="tempEdit" v-show="item.state==1"

@keyup.esc="item.state=0;tempEdit=item.name"

@keyup.enter="item.state=0;item.name=tempEdit;"

@blur="item.state=0;item.name=tempEdit;"

/>

</div>

<!-- 点击删除时删除其内容 -->

<button type="button" @click="removeitem(item)" class="del">X</button>

</li>

</ul>

</div>

</body>

<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

var vm=new Vue({

el:"#app",

data(){

return{

// 清单列表

// getItem是获取本地存储数据,

// ||"[]"如果获取不到转换为空的数组

list:JSON.parse(localStorage.getItem("list")||"[]"),

// 临时添加的数据存放处

temp:'',

// 修改框的临时数据存放处

tempEdit:''

}

},

methods:{

// 添加

additem(){

// 文本框为空时就返回

if(this.temp===""){return;}

// 添加到后面

this.list.push({

name:this.temp,

done:false,

state:0

})

// 清空临时框

this.temp="";

},

// 删除

removeitem(item){

// 弹框

var flag=window.confirm("确定要删除吗?");

if(flag){

// 查找符合条件元素的索引值

var ind=this.list.findIndex(value=>value.title===item.title);

// splice从第ind删除一个

this.list.splice(ind,1);

}

}

},

computed:{

// 通过计算把现有的list数据计算出已完成和未完成

// 未完成

undolist(){

// filter数组的过来函数,如果返回结果为真则当前遍历的数据保留

// 否则就会被过滤掉

return this.list.filter(item=>!item.done);

},

// 已完成

doneList(){

return this.list.filter(item=>item.done);

}

},

watch:{

"list":{

handler(){

// setItem设置本地数据

// JSON.stringify把js对象转换为json字符串

// JSON.prase把字符串转换为js对象

localStorage.setItem("list",JSON.stringify(this.list))

},

deep:true,

}

}

})

</script>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 vue实现本地存储添加删除修改功能 的全部内容, 来源链接: utcz.com/p/240193.html

回到顶部