基于vue框架如何制作本地存储添加等常见操作
Admin 2022-07-12 群英技术资讯 365 次浏览
本文实例为大家分享了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>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在react中的三大属性有state、props、refs,这篇文章给大家分享的是有关react的refs属性的内容,小编觉得挺实用的,因此分享给大家做个参考,接下来一起跟随小编看看吧。
今天我们来学习JS的变量提升与函数提升的内容,对于JS的变量提升与函数提升究竟是什么提升呢?顺序是怎样的呢?接下来我们一一的详细的了解一下。
这篇文章主要介绍了一个处理react异常的ErrorBoundary组件,简单实用,代码详细,对这个组件感兴趣的朋友可以参考下
在javascript中,可以使用toString()方法来将整数转为16进制,该方法可以解析指定数值,并返回指定进制的字符串表示形式,具体转换语法为“指定数字对象.toString(16);”。 本教程操作环境
这篇文章主要为大家详细介绍了微信小程序实现表单验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008