摸鱼少学习多

day82-todolist全局事件总线改进

通过组件全局事件总线,完成消息的传递,改进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>

 

 
posted @   北海之上  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
/* 粒子吸附*/
点击右上角即可分享
微信分享提示