Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 Backbonejs:侦听单独视图上的按钮单击_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript Backbonejs:侦听单独视图上的按钮单击

Javascript Backbonejs:侦听单独视图上的按钮单击,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个管理子视图view.B和view.C的父视图(view.a)。View.B有一个控制View.B上事件的按钮界面 设置 View.A View.B view.B.template.html View.C view.C.template.html View.B.template.html <div class="btn-group"> <button id="button-1" type="button" class="btn btn-def

我有一个管理子视图view.B和view.C的父视图(view.a)。View.B有一个控制View.B上事件的按钮界面

设置

View.A
  View.B
    view.B.template.html
  View.C
    view.C.template.html
View.B.template.html

<div class="btn-group">
  <button id="button-1" type="button" class="btn btn-default">
    Button 1
  </button>
  <button id="button-2" type="button" class="btn btn-default">
    Button 2
  </button>
</div>

我想做的是控制View.C上的事件以及View.B按钮。我已经尝试将delegatedEvents添加到View.C中,以侦听View.B模板中按钮ID的单击,但这不起作用。有解决方法吗?

我会创建一个eventaggregator,类似于:

var vent = _.extend({}, Backbone.Events);
然后你可以监听并触发事件。所以你会有这样的东西:

// This would be from View.B
someMethod: function(ev) {
    vent.trigger('someMethod', ev);
}

// And this would be in View.C
initialize: function() {
    this.listenTo(vent, 'someMethod', this.mySomeMethod);
}
然后,您可以在必要时重用事件聚合器。这样做

// This would be from View.B
someMethod: function(ev) {
    vent.trigger('someMethod', ev);
}

// And this would be in View.C
initialize: function() {
    this.listenTo(vent, 'someMethod', this.mySomeMethod);
}