<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
* {
padding: 0;
margin: 0;
}
ul,
ol {
list-style: none;
}
.header {
width: 400px;
margin: 0px auto;
margin-top: 50px;
box-shadow: 1px 1px 5px 5px;
}
.input {
padding: 10px;
height: 30px;
display: flex;
}
.input input {
padding-left: 10px;
flex: 1;
}
.input button {
width: 60px;
height: 30px;
}
.text {
padding: 10px;
display: flex;
}
.text .list {
flex: 1;
background-color: aliceblue;
text-align: center;
cursor: pointer;
}
/* .text div:nth-child(1){
background-color: black;
color: white;
} */
.cart {
padding: 10px;
}
.cart li {
height: 20px;
display: flex;
margin-bottom: 10px;
}
.cart li div {
flex: 1;
padding-left: 10px;
}
.cart li input {
height: 20px;
width: 20px;
}
.clear {
padding: 10px;
display: flex;
}
.clear div {
flex: 1;
}
.list.active {
background-color: black;
color: white;
}
</style>
</head>
<body>
<div class="header" id="app">
<div class="input">
<input type="text" placeholder="请输入" ref="inputref" v-model="message" />
<button @click="haddleadd()">添加</button>
</div>
<div class="text">
<div class="list" :class="type=='all'? 'active' : '' " @click="check('all')">所有待办事项({{arr.length}})
</div>
<div class="list" :class="type=='some'? 'active' : '' " @click="check('some')">
已完成({{computetode.length}})</div>
<div class="list" :class="type=='every'? 'active' : '' " @click="check('every')">
未完成({{uncomputetode.length}})</div>
</div>
<div class="cart">
<!-- <h3>所有</h3> -->
<ul>
<li v-for="item in currentarr" :key="item.id">
<input type="checkbox" v-model="item.complate" />
<div>{{item.text}}</div>
<button @click="remove(item.id)">删除</button>
</li>
</ul>
</div>
<!-- <div class="cart">
<h3>已完成</h3>
<ul>
<li v-for="item in computetode" :key="item.id">
<input type="checkbox" v-model="item.complate"/>
<div>{{item.text}}</div>
<button >删除</button>
</li>
</ul>
</div>
<div class="cart">
<h3>未完成</h3>
<ul>
<li v-for="item in uncomputetode" :key="item.id">
<input type="checkbox" v-model="item.complate"/>
<div>{{item.text}}</div>
<button >删除</button>
</li>
</ul>
</div> -->
<div class="clear">
<div></div>
<button @click="removeall()">清除</button>
</div>
</div>
<script src="lib/vue.global.js"></script>
<script>
var todeid = 1
</script>
<script>
const {
createApp
} = Vue
const app = createApp({
data() {
return {
message: '',
arr: [],
type: 'all',
currentarr: []
}
},
computed: {
computetode() {
return this.arr.filter(item => item.complate == true)
},
uncomputetode() {
return this.arr.filter(item => item.complate == false)
},
},
methods: {
haddleadd() {
this.$refs.inputref.focus()
if (this.message.trim() != '') {
this.arr.push({
id: todeid++,
complate: false,
text: this.message.trim()
})
}
console.log(this.arr)
},
remove(id){
this.arr=this.arr.filter(item=>item.id!=id)
},
removeall(){
this.arr=[]
},
check(types) {
this.type = types
}
},
watch: {
uncomputetode() {
if (this.type == 'every') {
this.currentarr = this.uncomputetode
} else if (this.type == 'some') {
this.currentarr = this.computetode
} else {
this.currentarr =this.arr
}
},
type: {
handler(newtype) {
console.log(newtype)
switch (newtype) {
case 'all':
this.currentarr = this.arr
break
case 'some':
this.currentarr = this.computetode
break
case 'every':
this.currentarr = this.uncomputetode
break
}
},
immediate: true,
},
}
})
app.mount('#app')
</script>
</body>
</html>