console
var app = new Vue({
el: "#app",
data: {
tasks: [{
text: "Vue.js - 是一套构建用户界面的渐进式框架",
complete: false
},
{
text: "Bootstrap 响应式布局",
complete: false
},
{
text: "Webpack前端资源模块化管理和打包工具",
complete: false
},
{
text: "Yarn 中文手册Yarn 是一个快速、可靠、安全的依赖管理工具",
complete: true
},
{
text: "JavaScript语言精粹",
complete: false
},
{
text: "JavaScript高级程序设计",
complete: true
}],
newTask: "程序员的修炼之道"
},
methods: {
addTask: function(event) {
event.preventDefault();
this.tasks.push({
text: this.newTask,
complete: false
});
this.newTask = "";
},
editTask: function(task) {
this.removeTask(task);
this.newTask = task.text;
},
removeTask: function(task) {
_tasks = this.tasks;
_tasks.forEach(function(item, index) {
if (item.text == task.text) {
_tasks.splice(index, 1);
}
})
},
completeTask: function(task) {
task.complete = true;
}
},
computed: {
remainTask: function() {
return this.tasks.filter(function(task) {
return ! task.complete;
})
},
filterTask: function() {
return this.tasks.filter(function(task) {
return task.complete;
})
}
}
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<div class="container" id="app" v-cloak>
<div class="form-group">
<label for="exampleInputEmail1">
任务描述
</label>
<input type="text" class="form-control" placeholder="请输入你要添加的任务" v-model="newTask"
required>
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit" v-on:click="addTask">
添加任务
</button>
</div>
<p v-show="remainTask.length>0">
任务列表 ({{remainTask.length}})
</p>
<ul class="list-group">
<template v-for="task in remainTask">
<li class="list-group-item">
<span v-on:dblclick="editTask(task)" title="编辑任务">
{{task.text}}
</span>
<button v-on:click="removeTask(task)" title="移除任务">
✗
</button>
<button v-on:click="completeTask(task)" title="任务完成">
✔
</button>
</li>
</template>
</ul>
<form>
</form>
<p>
已完成的Task({{filterTask.length}})
</p>
<ol class="list-group">
<template v-for="task in filterTask">
<li class="list-group-item">
{{task.text}}
</li>
</template>
</ol>
</div>
.list-group button {
background: none;
border: 0;
color: red;
outline: 0;
float: right;
font-weight: bold;
}