day82-todolist全局事件总线改进
head
methods:{ add(){ //校验数据 if (!this.title.trim()) return alert("输入不能为空") //将输入包装成todo对象 const todoObj={id:nanoid(),title:this.title,done:false} //通知app组件添加一个todo对象 this.$emit('addTodo',todoObj) //清空输入 this.title='' } },
footer
methods: { checkAll(e){ this.$emit('checkAllTodo', e.target.checked) // this.checkAllTodo(e.target.checked) }, clearAll() { if(confirm("确定清除吗?")){ this.$emit('clearAllTodo') // this.clearAllTodo() } } }
item
methods: { //勾选或取消勾选 handleCheck(id) { // 通知App组件将对应todo的done取反 // pubsub.publish('checkTodo', id) // this.checkTodo(id) this.$bus.$emit('checkTodo',id) }, handleDelete(id) { if(confirm('确定删除吗?')){ // 通知App组件删除对应的todo // pubsub.publish('deleteTodo', id) this.$bus.$emit('deleteTodo',id) } },
app
mounted() { // this.pubId_check = pubsub.subscribe('checkTodo', this.checkTodo) // this.pubId_delete = pubsub.subscribe('deleteTodo', this.deleteTodo) // this.pubId_update = pubsub.subscribe('updateTodo', this.updateTodo) this.$bus.$on('checkTodo',this.checkTodo) this.$bus.$on('deleteTodo',this.deleteTodo) }, beforeDestroy() { // pubsub.unsubsribe(this.pubId_check) // pubsub.unsubsribe(this.pubId_delete) // pubsub.unsubsribe(this.pubId_update) this.$bus.$off('checkTodo') this.$bus.$off('deleteTodo') },
<div class="todo-wrap"> <HeaderCom @addTodo="addTodo"></HeaderCom> <ListCom :todoList="todoList"></ListCom> <FooterCom :todoList="todoList" @checkAllTodo="checkAllTodo" @clearAllTodo="clearAllTodo"></FooterCom> </div>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗