使用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下将选择的checkbox的id组成字符串的方法
Nov 28 Javascript
jquery each()源代码
Feb 14 Javascript
javascript克隆对象深度介绍
Nov 20 Javascript
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
JSON格式化输出
Nov 10 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
Oct 31 Javascript
使用Vue实现移动端左滑删除效果附源码
May 16 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
python人人网登录应用实例
2014/09/26 Python
Python socket编程实例详解
2015/05/27 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
如何定义TensorFlow输入节点
2020/01/23 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
篝火晚会主持词
2014/03/25 职场文书
广告学专业求职信
2014/06/19 职场文书
辞职信怎么写
2015/02/27 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书