使用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 相关文章推荐
重定向实现代码
Nov 20 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
详解原生js实现offset方法
Jun 15 Javascript
vue中路由参数传递可能会遇到的坑
Dec 07 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
JS 5种遍历对象的方式
Jun 16 Javascript
javascript递归函数定义和用法示例分析
Jul 22 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 Javascript
React Native登录之指纹登录篇的示例代码
Nov 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php表单敏感字符过滤类
2014/12/08 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
DEFER怎么用?
2006/07/01 Javascript
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
python字符串替换示例
2014/04/24 Python
跟老齐学Python之一个免费的实验室
2014/09/14 Python
详细探究Python中的字典容器
2015/04/14 Python
python中sleep函数用法实例分析
2015/04/29 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
员工工作表扬信范文
2014/01/13 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
啤酒节策划方案
2014/05/28 职场文书
医院合作协议书
2014/08/19 职场文书
护士求职简历自我评价
2015/03/10 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python