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 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
axios基本入门用法教程
Mar 25 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
May 08 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
VUE 全局变量的几种实现方式
Aug 22 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
通过实例解析json与jsonp原理及使用方法
Sep 27 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
javascript document.images实例
2008/05/27 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
Js sort排序使用方法
2011/10/17 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
前端性能优化及技巧
2016/05/06 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
Python中的字符串替换操作示例
2016/06/27 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python3常用内置方法代码实例
2019/11/18 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
类如何去实现接口
2013/12/19 面试题
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
2014年学生工作总结
2014/11/20 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫