使用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 相关文章推荐
关于IFRAME 自适应高度的研究
Jul 20 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
jQuery实现给页面换肤的方法
May 30 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
Nov 25 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
Nov 15 Javascript
node crawler如何添加promise支持
Feb 01 Javascript
javascript之Object.assign()的痛点分析
Mar 03 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
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
jQuery 选择器理解
2010/03/16 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python如何让类支持比较运算
2018/03/20 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
新闻专业个人求职信
2013/12/19 职场文书
运动会广播稿300字
2014/01/10 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
2014年维稳工作总结
2014/11/18 职场文书
干部个人考察材料
2014/12/24 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
爱护公物主题班会
2015/08/17 职场文书
学生会部长竞选稿
2015/11/19 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android