当前位置:首页 > 编程笔记 > 正文
已解决

ToDoList全局事件总线学习笔记

来自网友在路上 149849提问 提问时间:2023-10-23 05:10:04阅读次数: 49

最佳答案 问答题库498位专家为你答疑解惑

全局事件总线

全局事件总线:任意组件间通信

安装全局事件总线

new Vue({……beforeCreate(){Vue.prototype.$bus=this},……
})

使用事件总线

接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。

methods(){demo(data){}mounted(){this.$bus.$on('xxx',this.demo)}}

提供数据:this. b u s . bus. bus.emit(‘xxx’,this.demo)

注意

最好在beforeDestroy钩子中,用$off去解绑当前组件所用到的事件。

ToDoList中的实践

通过全局事件总线实现item给app传值。

  1. 安装全局事件总线
import Vue from 'vue'
import App from './App.vue'// 关闭vue的生产提示
Vue.config.productionTip = false;new Vue({el: '#app',render: h => h(App),beforeCreate() {Vue.prototype.$bus = this}
})
  1. App.vue与MyList.vue中的操作
    App.vue取消给List传的方法,MyList取消props接收的方法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. Item给App传递数据
    app收数据,app绑定事件总线的自定义事件
  mounted() {this.$bus.$on('checkTodo', this.checkTodo)this.$bus.$on('deleteTodo', this.deleteTodo)},beforeDestroy() {this.$bus.$off('checkTodo')this.$bus.$off('deleteTodo')}
  1. 触发
methods: {handleCheck(id) {this.$bus.$emit('checkTodo',id)},handleDelete(id) {if (confirm('确定删除吗?')) {this.$bus.$emit('deleteTodo', id)}}},this.$bus.$emit('deleteTodo', id)}}},

在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"ToDoList全局事件总线学习笔记":http://eshow365.cn/6-22172-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!