Javascript 主干视图-跨组件通信

Javascript 主干视图-跨组件通信,javascript,backbone.js,underscore.js,backbone-views,backbone-events,Javascript,Backbone.js,Underscore.js,Backbone Views,Backbone Events,我想在ChildView1和ChileView2之间进行跨组件通信。 我希望在父级(ComponentView)中有a.extend({},Backbone.Events)obj 我在下面的一些例子中看到了类似的东西 var BaseView = Backbone.View.extends({ }); var ComponentView = BaseView.extends({ }); var ChildView1 = ComponentView.extends({ }); var ChileV

我想在
ChildView1
ChileView2之间进行跨组件通信。

我希望在
父级(ComponentView)
中有
a.extend({},Backbone.Events)
obj

我在下面的一些例子中看到了类似的东西

var BaseView = Backbone.View.extends({
});
var ComponentView = BaseView.extends({
});
var ChildView1 = ComponentView.extends({
});
var ChileView2 = ComponentView.extends({
});

PS:我正在从另一个BackboneView中使用组件上的属性初始化所有组件。在Backbone中,我更喜欢使用某种发布/订阅事件模式在视图之间进行通信。以最简单的形式,您的代码将如下所示:

var ComponentView = BaseView.extends(_.extend({}, Backbone.Events, {
});
请注意,我们是如何创建一个新对象的,它扩展了内置的
主干.Events
,并将其传递到
ChildView1
。在ChildView内部或引用eventAggregator的任何其他地方,您可以绑定/触发新事件。但是,这只是冰山一角,因为您将需要处理不再需要了解此事件处理程序的事件,解除事件处理程序的绑定并确保不会泄漏内存


这里没有足够的空间深入讨论这个问题,所以我建议阅读更多关于主干中事件聚合的内容。我使用过的所有逻辑都源自德里克·贝利(Derick Bailey)在其著作《卓越信息来源》(the excellence sources of information)中所写的作品。这些最终来自他的创作,这是对脊梁骨的一个很好的赞美。如果您不想担心这些问题,或者只是想要一个更简单的API,我建议使用或类似的工具来改进主干视图。

在主干中,我更喜欢使用某种发布/订阅事件模式来在视图之间通信。以最简单的形式,您的代码将如下所示:

var ComponentView = BaseView.extends(_.extend({}, Backbone.Events, {
});
请注意,我们是如何创建一个新对象的,它扩展了内置的
主干.Events
,并将其传递到
ChildView1
。在ChildView内部或引用eventAggregator的任何其他地方,您可以绑定/触发新事件。但是,这只是冰山一角,因为您将需要处理不再需要了解此事件处理程序的事件,解除事件处理程序的绑定并确保不会泄漏内存


这里没有足够的空间深入讨论这个问题,所以我建议阅读更多关于主干中事件聚合的内容。我使用过的所有逻辑都源自德里克·贝利(Derick Bailey)在其著作《卓越信息来源》(the excellence sources of information)中所写的作品。这些最终来自他的创作,这是对脊梁骨的一个很好的赞美。如果您不想担心这些问题,或者只是想要一个更简单的API,我建议使用或类似的工具来改进主干视图。

我同意这种方法。但是,我想将事件聚合器对象保留在parentView(即ComponentView)中。只要让ComponentView创建事件聚合器,并在创建它们时传递到ChildView1和ChildView2中即可。我同意这种方法。但是,我想将事件聚合器对象保留在parentView(即ComponentView)中。只需让ComponentView创建事件聚合器,并在创建时传递到ChildView1和ChildView2。