发布订阅模式实现vue组件间通信
前几天遇到个问题,“发布订阅模式实现vue组件间通信”,当时没回答出来,之后通过查询一些资料学习了一下,因此在这里记录一下,也欢迎大家指正,(小白,请求轻喷)
window.bus = {
box: {},
$on: function (name,fun) {
if (!this.box[name]) {
this.box[name] = [];
}
this.box[name].push(fun);
},
$emit: function(){
if (this.box[arguments[0]]) {
for (var i=0;i<this.box[arguments[0]].length;i++){
this.box[arguments[0]][i](arguments[1]);
}
}
}
}
window.bus.$on("one",function(param){
console.log("one : " + param);
});
window.bus.$on("two",function(param){
console.log("two : " + param);
});
window.bus.$on("two",function(param){
console.log("two : " + param);
});
window.bus.$emit("one","the first");
window.bus.$emit("two","the second");
运行结果如下图: