使用Vue完成一个简单的todolist的方法


Posted in Javascript onDecember 01, 2017

看了两天的Vue,还是上手写一个简单的todolist更实用(文末有彩蛋)。

一、使用vue-cli脚手架快速搭建一个框架

利用vue-cli来自动生成我们项目的前端目录及文件,方法:

npm install -g vue-cli
vue init webpack my-project
cd my-project
npm install
npm run dev

这样我们的一个基于webpack的vue项目目录就可以快速构建好了。

目录如下:

使用Vue完成一个简单的todolist的方法

二、完成一个简单的todolist

接下来就看一下webpack.base.conf文件,这是核心文件,必须执行的文件,这里可以看到entry和output,这就是入口和输出路径,在入口处看到了./src/main.js,这就找到了界面的入口处了。在main.js中可以看到创建了一个vue实例,并加载了模板组件App.vue,所以我们的todo list代码就可以写在App.vue中。

简单的todolist我们可以完成这几个功能:

1、显示todo列表

2、判断列表任务完成状态,若完成则添加相应的样式

3、在输入框中动态添加todo项目,点击回车在列表中显示

4、点击相应的项目转换状态

首先我们完成显示列表的功能:

<template>
 <div id="app">
  <input/>
  <ul>
   <li v-for="item in items">
    {{item.label}}
   </li>
  </ul>
 </div>
</template>

<script>
 export default {
  data () {
   return {
    items: [
     {
      label: 'read books',
      isFinished: false
     },
     {
      label: 'eat dinner',
      isFinished: true
     }
    ]
   }
  }
 }
</script>

使用Vue完成一个简单的todolist的方法

效果

export后面跟的对象,会作为 new Vue()的参数,来创建一个Vue的组件,并导出。

判断任务的完成状态,完成则添加text-decoration样式

官方文档中我们可以看到:

使用Vue完成一个简单的todolist的方法

绑定class样式

如果v-bind中class后是一个对象的话,键代表添加的class的名称,value值代表一个布尔值,用来控制这个class属性的有无。
所以我们就可以这样:

<template>
 <div id="app">
  <input/>
  <ul>
   <li v-for="item in items" v-bind:class={finished:item.isFinished}>
    {{item.label}}
   </li>
  </ul>
 </div>
</template>

<script>
 export default {
  data () {
   return {
    items: [
     {
      label: 'read books',
      isFinished: false
     },
     {
      label: 'eat dinner',
      isFinished: true
     }
    ]
   }
  }
 }
</script>

<style>
 .finished {
  text-decoration: line-through;
 }
</style>

效果

使用Vue完成一个简单的todolist的方法

在输入框中填写item,点击回车完成添加列表并显示同时清空input框内容

用到的知识:

使用Vue完成一个简单的todolist的方法

监听回车

使用Vue完成一个简单的todolist的方法

表单控件监听

<template>
 <div id="app">
  <input v-on:keyup.enter="addNewItem" v-model="newItem"/>
  <ul>
   <li v-for="item in items" v-bind:class={finished:item.isFinished}>
    {{item.label}}
   </li>
  </ul>
 </div>
</template>

<script>
 export default {
  data () {
   return {
    items: [
     {
      label: 'read books',
      isFinished: false
     },
     {
      label: 'eat dinner',
      isFinished: true
     }
    ],
    newItem: ''
   }
  },
  methods: {
   addNewItem () {
    this.items.push({label: this.newItem,isFinished: false})
    this.newItem = ''  //清空输入框
   } 
  }
 }
</script>

<style>
 .finished {
  text-decoration: line-through;
 }
</style>

点击内容进行状态转换

在li标签上绑定一个click事件,点击时修改isFinished

//添加代码
 <li v-for="item in items" v-bind:class={finished:item.isFinished} v-on:click="finish(item)">
    {{item.label}}
 </li>

methods: {
 finish (item) {
    item.isFinished = !item.isFinished
  }
}

这样一个简单的todolist的基本功能已经完成。

使用Vue完成一个简单的todolist的方法

动图效果

小彩蛋:linux下制作GIF动图

上网查找了很多办法,很多不适合linux平台,发现这个办法不错:

下载SimpleScreenRecoder软件:

三条命令:

sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
sudo apt-get update
sudo apt-get install simplescreenrecorder

安装好后你可以选择录制区域

使用Vue完成一个简单的todolist的方法

参考资料:

Vue官方API文档:https://cn.vuejs.org/v2/api/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
Javascript实现代码折叠功能
Aug 25 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
js实现点击按钮弹出上传文件的窗口
Dec 23 Javascript
实现一个简单的vue无限加载指令方法
Jan 10 Javascript
JavaScript创建对象的七种方式(推荐)
Jun 26 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 #jQuery
如何让你的JS代码更好看易读
Dec 01 #Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 #Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 #Javascript
利用JS测试目标网站的打开响应速度
Dec 01 #Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 #Javascript
javascript按顺序加载运行js方法
Dec 01 #Javascript
You might like
php 操作符与控制结构
2012/03/07 PHP
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
js实现点击烟花特效
2020/10/14 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
Python编程中的异常处理教程
2015/08/21 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python Django路径配置实现过程解析
2020/11/05 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript