由于刚入vue不久,并且经验较浅。所以在使用官方介绍的bus总线的时候出现了一些很简单的低级的疑惑。
我的需求是
vue官网上的说法通过一个组件的id,来获取下面和他id相同组件的内容
(上图是官方的说法)
我的疑惑是:按照官方说的,在不使用vuex的情况下,使用一个全局变量来发射和接受需要交互的数据。
那么这个bus应该怎么写呢?这个问题也困惑了我很久,官方也没有找到更加详细的说法(也可能是我没有找到吧)
经过一个前辈H的指导,我终于正确的写了出来。
直接上代码:
先建立一个单独的bus的文件,保存在组建之外。
importVuefrom'vue'
constbus=newVue()
export defaultbu
然后在需要的组建里面按照正确的路劲来import就好了。
例如这样:
在需要传出去data的组建里,先import bus from 'yourpath',然后开始使用bus传数据。
bus.$emit('typeId',label.id)
在需要接收的组建里,先import bus from 'yourpath',然后使用bus接受。
let_this=this
bus.$on('typeId',function(value) {
_this.proper=_this.property.filter(v=>v.functionTypeId ===value) //这里是我的需求代码,你可以写上你自己的
})
值得注意的是这里的this,bus函数里面的this不再是vm的this,所以如果你要在bus里面操作vm的内容的话,需要在bus之外先存一下vm的this。然后才能正确使用。
就是这样,以上です。毎日少しずつ進んでください。
by the way 感谢@Helen帮我理清楚头绪。非常感谢!
网友评论