Vue.js实现一个todo-list的上移下移删除功能


Posted in Javascript onJune 26, 2017

如图,A simple todo-list长这样

Vue.js实现一个todo-list的上移下移删除功能

这是一个基于vue.js的一个简单的todo-list小demo。首先要实现添加非空list,点击list切换finished状态这样的一个效果,推荐学习地址---->点击打开链接

接下来是实现的一个上移,下移,删除的效果图:

Vue.js实现一个todo-list的上移下移删除功能

删除效果:

Vue.js实现一个todo-list的上移下移删除功能

讲一下思路:

上移-----首先将鼠标所指list的内容插入到上一条上面,然后删除鼠标所指的list(也就是this.items[index]),运行代码便可实现上移的效果,或者将上下两条list的内容进行调换也是可以的。

删除-----这里和上下移一样,主要是用到了操作数组的splice这个方法,既可以添加也可以删除,不懂的去补一下

小二~上代码:

----App.vue---- 

<div><input v-model="newItem" v-on:keyup.enter="addNew"></div> 
<div class="box-center"> 
 <ul class="box-list"> 
  <li v-for="item ,index in items" v-bind:class="{finished:item.isfinished}"  

  v-on:mouseover="moveBtn(item)" v-on:mouseout="leaveBtn(item)"> 
  <span v-on:click="toggleFinished(item)" v-bind:class="{bgYellow:item.isBgyellow}">{{item.label}}</span> 
  <span class="list-btn" v-show="item.isShow"> 
   <button v-on:click="moveUp(index,item)">上移</button> 
   <button v-on:click="moveDown(index,item)">下移</button> 
   <button v-on:click="deleteBtn(index)">删除</button> 
  </span> 
 </li> 
</ul>  
t;/div>

----Store.js---- 

const STORAGE_KEY = 'todos-vuejs' 
export default { 
 fetch () { 
  return JSON.parse(window.localStorage.getItem( 
   STORAGE_KEY) || '[]') 
 }, 
 save (items) { 
  window.localStorage.setItem(STORAGE_KEY,JSON.stringify( 
   items)) 
 } 
} 
----App.vue---- 
<span style="font-size:14px;"><script> 
import Store from './store' 
export default { 
 data: function() { 
  return { 
   title: 'A simple todo-list', 
   items: Store.fetch(), 
   newItem: '', 
   msg:'点击按钮',  
   isShow: false, 
   isBlock: true, 
   isBgyellow: false, 
   leftPx:0, 
   topPx:0 
  } 
 }, 
 watch: { 
  items: { 
   handler: function(items) { 
    Store.save(items) 
   }, 
   deep: true 
  } 
 }, 
 methods: { 
  toggleFinished: function(item) { 
   item.isfinished = !item.isfinished 
  }, 
  show:function ($event) { 
   $event.cancelBubble=true; 
   this.isBlock = false; 
   this.topPx = ($event.clientY); 
   this.leftPx = ($event.clientX); 
  }, 
  stop:function(event){ 
    this.isBlock = true; 
  }, 
  moveBtn:function(item) { 
   // console.log(item.label) 
   item.isShow = true; 
  }, 
  leaveBtn:function(item) { 
   item.isShow = false; 
  }, 
  addNew: function() { 
   //非空才可以添加 
   if(this.newItem!=''){ 
    this.items.push({ 
     label: this.newItem, 
     isfinished: false 
    })     
   } 
   this.newItem = ''; 
  }, 
  moveUp:function(index,item) { 
   //在上一项插入该项 
   this.items.splice(index-1,0,(this.items[index])); 
   //删除后一项 
   this.items.splice(index+1,1); 
   item.isShow = false; 
   if(index == 0) { 
    alert("到顶啦!"); 
   } 
  }, 
  moveDown:function(index,item) { 
   //在下一项插入该项 
   this.items.splice(index+2,0,(this.items[index])); 
   // 删除前一项 
   this.items.splice(index,1); 
   item.isShow = false; 
   if(index == this.items.length-1) { 
    alert("已经是最后一项啦!"); 
   } 
  }, 
  deleteBtn:function(index) { 
   this.items.splice(index,1); 
  } 
 }, 
} 
</script></span><span style="font-size: 18px;"> 
</span>

套路就是在html中插入方法或者class,methods中对数据进行操作~

总结:

这是本小白入门vue.js学习的第一个demo,有一些jQuery的观念不能很好的转变,总是习惯性的操作dom节点,殊不知vue可以有更好的方式去实现

以上所述是小编给大家介绍的Vue.js实现一个todo-list的上移下移删除功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一个简单的js动画效果代码
Jul 20 Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
判断浏览器的内核及版本号方法汇总
Jan 05 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
Jan 06 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
JsChart组件使用详解
Mar 04 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
Axios取消重复请求的方法实例详解
Jun 15 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 #Javascript
基于jQuery封装的分页组件
Jun 26 #jQuery
深入理解Angular中的依赖注入
Jun 26 #Javascript
详解AngularJS2 Http服务
Jun 26 #Javascript
详解用node.js实现简单的反向代理
Jun 26 #Javascript
JS作用域链详解
Jun 26 #Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 #jQuery
You might like
PL-880隐藏功能
2021/03/01 无线电
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
python和ruby,我选谁?
2017/09/13 Python
用python处理MS Word的实例讲解
2018/05/08 Python
利用nohup来开启python文件的方法
2019/01/14 Python
python开头的coding设置方法
2019/08/08 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
铣床操作工岗位职责
2014/06/13 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
地震捐款简报
2015/07/21 职场文书