<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>v-for,v-if</title>
<style>
.remove{
text-decoration: line-through;
color:#666;
background-color: white;
}
.noBorder{
border:none;
}
</style>
</head>
<body>
<div id="app1">
<h3>
任务总数:{{todolist.length}},未完成: {{notCompletedCount()}}
<input type="button" value="删除已完成的事项" @click="remove" >
</h3>
<ul>
<li v-for="(todo,index) in todolist">
<input type="checkbox" v-model="todo.isCompleted" />
<input type="text" class="noBorder"
v-model="todo.desc"
:class="{remove:todo.isCompleted}"
:disabled = "todo.isCompleted"
>
</li>
</ul>
<input type="text" v-model="newVal" >
<input type="button" value="添加" @click="add" >
</div>
</body>
</html>
<script src="js/vue.js"></script>
<script>
let vm = new Vue({
el:"#app1",
data:{
newVal:"",
todolist:[
{
isCompleted:false,
desc: "切割图片"
},
{
isCompleted:false,
desc: "html代码"
},
{
isCompleted:false,
desc: "css代码"
},
{
isCompleted:false,
desc: "js代码"
}
]
},
methods:{
add(){
this.todolist.push({
isCompleted:false,
desc:this.newVal
});
this.newVal="";
},
notCompletedCount(){
let count=0;
this.todolist.forEach(todo => {
count += todo.isCompleted==false?1:0;
});
return count;
},
remove(){
// this.todolist=this.todolist.filter(todo=>{
// return todo.isCompleted==false;
// });
if(confirm("亲,您真的要删除吗?")){
this.todolist=this.todolist.filter(todo=>todo.isCompleted==false);
}
}
}
});
</script>