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 相关文章推荐
jQuery点击弹出下拉菜单的小例子
Aug 01 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 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
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
Typescript的三种运行方式(小结)
2019/09/18 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python实现区域填充的示例代码
2021/02/03 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
销售业务员岗位职责
2014/01/29 职场文书
毕业实习评语
2014/02/10 职场文书
教师对学生的寄语
2014/04/03 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
法制演讲稿
2014/09/10 职场文书
党员转正介绍人意见
2015/06/03 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL