Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript backbone.js backbone.Events原型路由器事件聚合_Javascript_Backbone.js_Client Side_Singlepage - Fatal编程技术网

Javascript backbone.js backbone.Events原型路由器事件聚合

Javascript backbone.js backbone.Events原型路由器事件聚合,javascript,backbone.js,client-side,singlepage,Javascript,Backbone.js,Client Side,Singlepage,使此eventAggregator(Backbone.View.prototype.eventAggregator=551;.extend({},Backbone.Events);)对象在Backbone.js中可用于我的路由器,而无需将其作为参数传递 我有一个mainController(一个没有渲染的视图),在这里我正在实例化Backbone.view.prototype.eventAggregator 我还在mainController内部创建路由器,但只有视图才有eventAggrega

使此eventAggregator
(Backbone.View.prototype.eventAggregator=551;.extend({},Backbone.Events);)
对象在Backbone.js中可用于我的路由器,而无需将其作为参数传递

我有一个mainController(一个没有渲染的视图),在这里我正在实例化
Backbone.view.prototype.eventAggregator

我还在mainController内部创建路由器,但只有视图才有eventAggregator,而没有路由器


我不想走得更远,做Backbone.prototype.eventAggregator,这样路由器就可以拥有它。有没有更干净的方法可以做到这一点?

主干网已经内置了类似的功能,您可以使用(从主干网源代码):

然后在路由器中:

Backbone.trigger('something');
鉴于:

this.listenTo(Backbone, 'something', this.someMethod);

或者另一种方法取决于您尝试执行的操作。

正如Paul提到的,所有主干对象(包括路由器)都扩展了事件对象,因此您可以在这些主干对象上设置事件侦听器。但我理解为什么要集中管理事件,这样就不需要在各种对象上设置事件侦听器,也不需要传入事件聚合器

德里克·贝利(Derick Bailey)在下面的帖子中谈到了这一点,他提出的解决方案是创建一个应用程序级事件aggreagator

此外,如果您正在做比“待办”应用程序更复杂的事情,我鼓励您查看一些主干框架,如卓别林、木偶、样板等。您可以找到列表

在我的应用程序中,我使用了木偶网框架,并且发现它在创建模块化、易于维护的代码方面非常有用,其中已经处理了许多常用的重复性代码

this.listenTo(Backbone, 'something', this.someMethod);