vue相关

vue里的bus的写法

2017-12-14  本文已影响71人  小陈陈酱

由于刚入vue不久,并且经验较浅。所以在使用官方介绍的bus总线的时候出现了一些很简单的低级的疑惑。

我的需求是:

通过一个组件的id,来获取下面和他id相同组件的内容

image.png

(上图是官方的说法)

我的疑惑是:按照官方说的,在不使用vuex的情况下,使用一个全局变量来发射和接受需要交互的数据。

那么这个bus应该怎么写呢?这个问题也困惑了我很久,官方也没有找到更加详细的说法(也可能是我没有找到吧)

经过一个前辈H的指导,我终于正确的写了出来。

直接上代码:

先建立一个单独的bus的文件,保存在组建之外。

import Vue from 'vue'

const bus=newVue()

export default bus

然后在需要的组建里面按照正确的路劲来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帮我理清楚头绪。非常感谢!

上一篇 下一篇

猜你喜欢

热点阅读