使用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 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
动态样式类封装JS代码
Sep 02 Javascript
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
基于javascript实现的搜索时自动提示功能
Dec 26 Javascript
Angular中$compile源码分析
Jan 28 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
Jul 23 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
详解async/await 异步应用的常用场景
2019/05/13 Javascript
python进阶教程之异常处理
2014/08/30 Python
浅析Python基础-流程控制
2016/03/18 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Python列表与元组的异同详解
2019/07/02 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
酒店出纳岗位职责
2013/12/29 职场文书
无故旷工检讨书
2014/01/26 职场文书
分层教学实施方案
2014/03/19 职场文书
课内比教学心得体会
2014/09/09 职场文书
起诉意见书范文
2015/05/19 职场文书
秋季运动会加油词
2015/07/18 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
golang json数组拼接的实例
2021/04/28 Golang
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL