主干视图-跨组件通信
Backbone view - Cross component communication
var BaseView = Backbone.View.extends({
});
var ComponentView = BaseView.extends({
});
var ChildView1 = ComponentView.extends({
});
var ChileView2 = ComponentView.extends({
});
我想在ChildView1
和ChileView2.
之间进行跨组件通信
我想在parent(ComponentView)
中有a _.extend({}, Backbone.Events)
对象。
我在
下面看到了一些例子var ComponentView = BaseView.extends(_.extend({}, Backbone.Events, {
});
PS:我正在使用组件上存在的属性初始化来自另一个backeview的所有组件
在Backbone中,我更喜欢使用某种发布/订阅事件模式在视图之间进行通信。在最简单的形式中,您的代码看起来像下面这样:
/* Create an Event Aggregator for our Pub/Sub */
var eventAggregator = _.extend({}, Backbone.Events);
/* Pass that Event Aggregator to our Child Views */
var childView1 = new ChildView1({ "eventAggregator": eventAggregator });
/* From here we can just bind/trigger off of eventAggregator whenever we need */
eventAggregator.bind("tellChild", function(e) { alert(e.message); });
eventAggregator.trigger("tellChild", { "message": "hello" });
注意我们是如何创建一个扩展了内置Backbone.Events
的新对象并将其传递给ChildView1
的。在ChildView或其他任何有eventAggregator引用的地方,你可以绑定/触发新事件。然而,这只是冰山一角,因为您将需要处理不再需要知道这个事件处理程序,取消绑定事件处理程序并确保您不会泄漏内存。
这里没有足够的空间来深入讨论这个问题,所以我建议阅读更多关于Backbone中的事件聚合的内容。我曾经使用过的所有逻辑都来自德里克·贝利在博客文章和他的书"构建主干插件"中所写的工作(两者都是优秀的信息来源)。这些最终来自于他创造《木偶》的工作,这是对Backbone的一个很好的赞美。如果你不想担心这些问题,或者只是想要一个更简单的API,我建议使用木偶或类似的东西来改进你的骨干视图。
相关文章:
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- ReactJS中的子-父组件通信
- 我应该如何在 React 中与我的组件进行通信
- 通过返回键进行跨组件通信
- 角度1.5中的组件通信
- React组件与Native Mobile(iOS或Android)的通信
- Vuejs中同级组件之间的通信
- 角度 2 同级组件通信
- 角度 2 交叉应用程序(根组件)通信
- Reactjs 组件之间的通信
- AngularJS:在组件之间进行通信的最佳实践是什么?
- React 同级组件在按下按钮时进行通信(登录表单)
- Mithril js - 跨组件通信模式
- 如何管理独立反应组件之间的通信
- 在不使用状态/属性的情况下与父组件通信
- Vue组件通信
- AngularJS 2:如何拥有一个'属性'指令与其主机组件通信
- ReactJS组件通信
- 主干视图-跨组件通信
- Angularjs 1.5 -使用service的组件通信-异步变量操作