安装依赖

官网

安装依赖的css,js

$npm install

引入vue

<script src="js/vue.js"></script>

定义初始化数据

在app.js中,实例化Vue,然后定义初始化数据

{ //为了形成块级作用域()()
let vm = new Vue({
el: '#app',
data: {
datas: [
{id: 121,title: 'html5',isCompleted: false},
{id: 122,title: 'css3',isCompleted: false},
{id: 123,title: 'js6',isCompleted: false},
]
}
})

绑定假数据到li上

如果当前的isCompleted是true,就是显示选中状态

<li :class="{completed: isCom}" v-for="(item,index) in datas">
<div class="view">
<input class="toggle" type="checkbox">
<label>{{ item.title }}</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Create a TodoMVC template">
</li>

双向数据绑定

<input class="new-todo" placeholder="What needs to be done?" v-model="val">
val: '', //显式声明 输入框数据

回车输入数据

<input class="new-todo" placeholder="What needs to be done?" @keyup.enter="addItem" v-model="val">
methods: {
addItem(){
if(this.val){ //val存在或者非空的时候才会去添加
this.datas.push({
//console.log(new Date().getTime());
id: new Date().getTime(), //为了保持id的唯一
title: this.val,
isCompleted: false,
});
this.val = ''; //填完数据以后清空输入框的内容
}
}
}

显示总计

通过一个方法来计算数组数据的长度

methods: {
addItem(){
if(this.val){ //val存在或者非空的时候才会去添加
this.datas.push({
//console.log(new Date().getTime());
id: new Date().getTime(), //为了保持id的唯一
title: this.val,
isCompleted: false,
});
this.val = ''; //填完数据以后清空输入框的内容
}
},
clearCompleted(){
let arr = [];
//遍历datas,如果当前选项是未选中,就把它留下
this.datas.forEach(function(elem){
if(!elem.isCompleted){
arr.push(elem);
}
},this)
this.datas = arr;
}
}

首先绑定计算属性

<span class="todo-count"><strong>{{ legTotal }}</strong> item left</span>

选中后显示隐藏completed

通过v-show来控制显示隐藏

<button class="clear-completed" v-show="isShowClear">Clear completed</button>
//在计算属性中
compluted: {
isShowClear(){
for(let i=0;i<this.datas.length;i++){
if(this.datas[i].isCompleted){
return true
}
}
return false
}
}

点击clear completed删除选中项

绑定点击事件

<button class="clear-completed" v-show="isShowClear" @click="clearCompleted">Clear completed</button>

在方法中写这个点击事件

clearCompleted(){
let arr = [];
//遍历datas,如果当前选项是未选中,就把它留下
this.datas.forEach(function(elem){
if(!elem.isCompleted){
arr.push(elem);
}
},this)
this.datas = arr;
},

点击X号删除当前项

添加点击事件

<button class="destroy" @click="removeCurrent(index)"></button>
removeCurrent(index){
this.datas.splice(index,1);
}

全选全不选

点击全选如果是true,让数据全部变成非选中状态;

<input id="toggle-all" class="toggle-all" type="checkbox"  @click="checkedAll">
//在方法中
checkedAll(){
if(this.isCheckedAll){ //全部选中
this.datas.forEach(elem=>{
elem.isCompleted = false;
})
}else{
this.datas.forEach(elem=>{
elem.isCompleted = true;
}) }
this.isCheckedAll = !this.isCheckedAll;
}

写在最后

大家可以练习练习。

todocmvc的安装的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. Linux分区挂载点介绍

    一.Linux分区挂载点介绍 Linux分区挂载点介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整: 分区类型 介绍 备注 /boot 启动分区 一般设置100M-200M, ...

  2. Ajax定时局部刷新

    1.局部刷新一个地方 function refreshOnTime(){ $.ajax({ //配置 }); //7秒后重复执行该函数 setInterval('refreshOnTime', 700 ...

  3. [C++] c language 23 keywords

       c language keywords

  4. 文件上传控件asp:FileUpload

    前端 使用的控件<asp:FileUpload ID="fileup" runat="server" /><span class=" ...

  5. 使用Selenium&PhantomJS的方式爬取代理

    前面已经爬取了代理,今天我们使用Selenium&PhantomJS的方式爬取快代理 :快代理 - 高速http代理ip每天更新. 首先分析一下快代理,如下 使用谷歌浏览器,检查,发现每个代理 ...

  6. Log4j配置(转)

    原文:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录 ...

  7. C语言访问mysql数据库

    mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...

  8. Yii2 中国省市区三级联动

    1.获取源码:https://github.com/chenkby/yii2-region 2.安装 添加到你的composer.json文件 "chenkby/yii2-region&qu ...

  9. HDU 2084 数塔 (水DP)

    题意:.... 析:从下往上算即可,水DP. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...

  10. 三)EasyUI layout

    参考文档 http://www.jeasyui.com/documentation/layout.php