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 相关文章推荐
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
用js实现的检测浏览器和系统的函数
Apr 09 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
浅谈JS闭包中的循环绑定处理程序
Nov 09 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
May 11 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
原生js实现轮播图
Feb 27 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
JS数组方法slice()用法实例分析
Jan 18 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和ACCESS写聊天室(二)
2006/10/09 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
Node.js中child_process实现多进程
2015/02/03 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
解决Python二维数组赋值问题
2019/11/28 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
Hotels.com中国区:好订网
2016/08/18 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
美发店5.1活动方案
2014/01/24 职场文书
财务稽核岗位职责
2015/04/13 职场文书
起诉书范文
2015/05/20 职场文书
小学六一主持词开场白
2015/05/28 职场文书
元旦晚会开场白
2015/05/29 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS