使用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 相关文章推荐
alixixi runcode.asp的代码不错的应用
Aug 08 Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 Javascript
JS关键字变色实现思路及代码
Feb 21 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
May 28 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
微信小程序实现炫酷的弹出式菜单特效
Jan 28 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
Vue运用transition实现过渡动画
May 06 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
Jun 10 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/06/28 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
PHP7新增函数
2021/03/09 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
JS实现简易留言板(节点操作)
2020/03/16 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python3爬取各类天气信息
2018/02/24 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
学习Python需要哪些工具
2020/09/04 Python
幼儿如何来做好自我评价
2013/11/05 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
骨干教师考核方案
2014/05/09 职场文书
英语专业自荐书
2014/06/13 职场文书
车间主任岗位职责
2015/02/03 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL