使用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 相关文章推荐
单独使用CKFinder选择图片的方法
Aug 21 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
May 18 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
vue通过路由实现页面刷新的方法
Jan 25 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
JS如何在数组指定位置插入元素
Mar 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
mysql5详细安装教程
2007/01/15 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
php查询操作实现投票功能
2016/05/09 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript 自定义事件初探
2009/08/21 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
React中的refs的使用教程
2018/02/13 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
Python functools模块学习总结
2015/05/09 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python for循环及基础用法详解
2019/11/08 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
行政助理的岗位职责
2014/02/18 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
受伤赔偿协议书
2014/09/24 职场文书
2014年应急工作总结
2014/12/11 职场文书
离婚协议书怎么写
2015/01/26 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技