vue 兄弟元件之間傳值之bus
有時候兩個元件也需要通訊(非父子關係)。當然Vue2.0提供了Vuex,但在簡單的場景下,可以使用一個空的Vue例項作為中央事件匯流排。
參考:http://blog.csdn.net/u013034014/article/details/54574989?locationNum=2&fps=1
例子:https://segmentfault.com/q/1010000007491994
<div id="app"> <c1></c1> <c2></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 @click="sendEvent">Say 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 './Bus' export default { data() { return { ......... } }, methods: { .... Bus.$emit('log', 120) }, }
元件2
import Bus from './Bus' export default { data() { return { ......... } }, methods: { ....
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()來呼叫
相關文章
- Vue之元件間傳值Vue元件
- Vue - 元件之間的傳值方式Vue元件
- 兄弟元件之間資訊傳遞元件
- Vue.js 元件之間的傳值Vue.js元件
- vue中兄弟之間元件通訊Vue元件
- vue---註冊元件、元件之間父子傳值Vue元件
- vue父子元件之間傳值以及方法呼叫Vue元件
- vue兄弟元件event-bus通訊Vue元件
- Vue--子元件之間相互呼叫及傳值Vue元件
- 動態渲染之vue頁面向元件間傳值Vue元件
- Vue 元件間傳值Vue元件
- Vue父子之間的值傳遞Vue
- 使用全域性 bus 在 Vue 的兄弟元件中簡單傳值(以及 this 重定向的 5 種方法)Vue元件
- 非父子元件之間傳值(Bus/匯流排/釋出訂閱模式/觀察者模式)元件模式
- vue元件巢狀之 - 父元件向子元件傳值Vue元件巢狀
- 父子元件之間的傳值問題元件
- Vue元件之間傳值完整小結Vue元件
- vue元件之間的資料傳遞Vue元件
- Vue.js 元件之間傳遞資料Vue.js元件
- Vue 元件間的傳值(通訊)Vue元件
- vue工程利用pubsub-js實現兄弟元件之間的通訊VueJS元件
- Vue 元件傳值Vue元件
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- VUE3 之 元件傳參Vue元件
- AbilitySlice之間的傳遞值
- AbilitySlice之間的回傳值
- vue元件之間的通訊Vue元件
- vue.js使用props在父子元件之間傳參Vue.js元件
- Vue元件、元件傳值和元件插槽Vue元件
- AndroidActivity之間的傳值示例Android
- vue和react元件傳值VueReact元件
- vue-父子元件之傳值和單項資料流問題Vue元件
- vue父元件和子元件傳值Vue元件
- vue兩個元件間值的傳遞或修改方式Vue元件
- 元件:非父子間傳值(同級傳值)元件
- Vue--子元件互相傳值,子元件來回傳值,傳值反覆橫跳Vue元件
- Vue子元件與父元件之間的通訊Vue元件
- Vue元件之間的資料傳遞(通訊、互動)詳解Vue元件