使用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异步调用页面后台方法&amp;#8207;(asp.net)
Mar 01 Javascript
瀑布流布局并自动加载实现代码
Mar 12 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
自编jQuery插件实现模拟alert和confirm
Sep 01 Javascript
解决node.js安装包失败的几种方法
Sep 02 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
将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中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
javascript动态创建对象的属性详解
2018/11/07 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
layui实现数据分页功能
2019/07/27 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
python检测lvs real server状态
2014/01/22 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
Django logging配置及使用详解
2019/07/23 Python
Python换行与不换行的输出实例
2020/02/19 Python
Python yield的用法实例分析
2020/03/06 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
求职信的最佳写作思路
2014/02/01 职场文书
工厂标语大全
2014/10/06 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python