Vuejs中同级组件之间的通信
Communication between sibling components in Vuejs
使用$broadcast
和$dispatch
,父组件和子组件之间的通信非常简单
我试图解决的问题是兄弟组件之间的通信。我目前所做的是在子组件上运行一个$dispatch
,然后被父组件vm
上的一个事件捕获,该事件又是同级组件的$broadcast
。
IE(非功能性,简化示例):
new Vue({
components: { Brother, Sister },
events: {
'brother-to-sister-event': function(message) {
this.$broadcast('message-to-sister', message);
}
});
Brother
this.$dispatch('brother-to-sister-event', message)
Sister
events: {
'message-to-sister': function(message) {
alert('Message from Brother receiced!');
}
}
我只是觉得我在做很多关于我的数据如何在兄弟组件之间传递的乒乓球。我在文档中找不到一个处理此问题的好例子。上面的例子是我最好的解决方案
有人有一个很好的例子来说明如何以更有效的方式处理这件事吗?我的目标是,当我从哥哥那里拿到$broadcast
或$dispatch
时,姐姐会立即拿到。在这样做的过程中,我不必用中间事件来扰乱根vm
。
所以解决方案应该是这样的:
new Vue({
components: { Brother, Sister }
});
Brother
this.$dispatch('brother-to-sister-event', message)
Sister
events: {
'brother-to-sister-event': function(message) {
alert('Message from Brother receiced!');
}
}
但我没能让这样的东西发挥作用。
兄弟组件的Plain Vue.js通信只能通过父组件完成,正如您在示例中所描述的那样。
为更复杂的应用程序处理这些情况的一种更复杂的方法是中央状态管理器。
Vue.js创建者发布了一个类似redux的组件,当与vuejs一起使用时,它会通过在商店上调度操作来更新它们的状态。然后,vuejs框架的"反应性"会拾取对组件状态所做的任何更改,并重新呈现它们。
组件的文档非常好
Vuex
Vuex文档
Vuex todo mvc示例
相关文章:
- firefox插件和dev/panel之间的通信
- 如何在两个不同的iframe HTML之间进行通信
- Angularjs事件与发布/订阅指令之间的通信
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 如何在Windows Phone 8.1应用程序中在C#和Javascript之间传递数据或通信
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何在同源选项卡之间建立通信
- 如何在 PHP 和 JS 中的并发会话之间进行通信
- 如何在两个动画画布元素之间进行通信
- 在 HTML5 和 C# Web 套接字通信之间
- angularjs 中控制器和指令之间的通信
- 歌剧扩展脚本和它们之间的通信
- 如何使用js在两个aspx页面之间进行通信
- 多个应用程序之间的通信
- Socket.IO:如何在同一服务器中的Socket.on()事件之间通信/交换数据
- chrome扩展的浏览器操作、后台脚本和内容脚本之间通信的上下文和方法
- 使用PhoneGap/Cordova时应用程序和服务器之间通信的最佳实践
- 使用AJAX在两个JavaScript文件之间通信并发送数据