Vue待办事项(选项卡)

<!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>

相关推荐
Lorin 洛林10 分钟前
一文读懂 Agent Skills
前端·网络
newbe365241 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
KaMeidebaby8 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
kyriewen9 小时前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
JNX_SEMI9 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion10 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由10 小时前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子10 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all
fei_sun10 小时前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
大爱一家盟11 小时前
告别卡点BGM同质化 2026原创卡点音乐素材下载网站 TOP5 推荐
大数据·前端·人工智能