学校校园网站建设服务,辽宁建设工程信息网查,免费海外网络连接器,烟台哪家公司可以做网站前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。
有时候两个组件也需要通信#xff08;非父子关系#xff09;。当然Vue2.0提供了Vuex#xff0c;但在简单的场景下#xff0c;可以使…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。
有时候两个组件也需要通信非父子关系。当然Vue2.0提供了Vuex但在简单的场景下可以使用一个空的Vue实例作为中央事件总线。
div idappc1/c1c2/c2
/div
var Bus new Vue(); //为了方便将Bus空vue定义在一个组件中在实际的运用中一般会新建一Bus.js
Vue.component(c1,{ //这里已全局组件为例同样单文件组件和局部组件也同样适用
template:div{{msg}}/div,data: () ({msg: Hello World!}),created() {Bus.$on(setMsg, content { this.msg content;});}
});
Vue.component(c2,{template: button clicksendEventSay Hi/button,methods: {sendEvent() {Bus.$emit(setMsg, Hi Vue!);}}
});
var app new Vue({el:#app
})
在实际运用中一般将Bus抽离出来:
Bus.js
import Vue from vue
const Bus new Vue()
export default Bus
组件调用时先引入
组件1
import Bus from ./Busexport default {data() {return {.........}},methods: {....Bus.$emit(log, 120)},} 组件2
import Bus from ./Busexport default {data() {return {.........}},mounted () {Bus.$on(log, content { console.log(content)}); }
}
但这种引入方式经过webpack打包后可能会出现Bus局部作用域的情况即引用的是两个不同的Bus导致不能正常通信 实际运用二推荐
当然也可以直接将Bus注入到Vue根对象中
import Vue from vue
const Bus new Vue()var app new Vue({el:#app,data:{Bus} })
在子组件中通过this.$root.Bus.$on(),this.$root.Bus.$emit()来调用 转自https://www.cnblogs.com/fanlinqiang/p/7756566.html