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 相关文章推荐
利用javascript移动div层-javascript 拖动层
Mar 22 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
JavaScript 继承使用分析
May 12 Javascript
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
Sep 29 Javascript
Node.js API详解之 util模块用法实例分析
May 09 Javascript
详解JavaScript的this指向和绑定
Sep 08 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
php 上传功能实例代码
2010/04/13 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
python文件比较示例分享
2014/01/10 Python
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python实现的tab文件操作类分享
2014/11/20 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
用python进行视频剪辑
2020/11/02 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
纪念建党演讲稿范文
2014/01/13 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
测绘工程专业求职信
2014/07/15 职场文书
公司放假通知范文
2015/04/14 职场文书
表扬信格式模板
2015/05/05 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL