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 相关文章推荐
asp.net+js 实现无刷新上传解析csv文件的代码
May 17 Javascript
用JS实现一个TreeMenu效果分享
Aug 28 Javascript
js 文本滚动效果的实例代码
Aug 17 Javascript
深入理解JQuery keyUp和keyDown的区别
Dec 12 Javascript
JavaScript类继承及实例化的方法
Jul 25 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
在vue-cli中组件通信的方法
Dec 16 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
js实现鼠标点击飘爱心效果
Aug 19 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 24 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
PHP培训要多少钱
2017/06/06 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
使用Python读取二进制文件的实例讲解
2018/07/09 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
公务员总结性个人自我评价
2013/12/05 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
疾病防治方案
2014/05/31 职场文书
2015年个人思想总结
2015/03/09 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python