我在集合的 bbone 视图上的用户交互时触发了一个自定义事件,我希望它在另一个不相关的视图上发出更改信号。为此,我使用自定义事件。
//a global event object for my pub-sub model
var vent = Backbone.extend({}, Backbone.Event);
var C1 = Backbone.Collection.extend();
var V1 = Backbone.View.extend(
events: {
'click .appointment': 'clickCallback'
},
clickCallback: function(){
vent.trigger('appointment:selected', apptProps);
}
);
var c1Obj = new C1([{...}, {...}]);
var v1Obj = new V1({
collection: c1Obj
});
因此,当用户单击集合视图 v1Obj 的 .appointment 元素时,这将宣布一个约会:选定事件。
现在我想要一个不同的视图 V2 来响应这个事件。绑定到“appointment:selected”事件的最佳位置在哪里?在视图 V2(CASE 1)的 initialize() 中还是在 V2 的集合/模型的 initialize() 中(CASE 2)或其他地方?我试图澄清什么是最佳做法,如果有的话。
情况1:
var V2 = Backbone.View.extend(
initialize: function(){
vent.on('appointment:selected', this.apptSelected, this);
},
appSelected: function(apptProps){
...
}
);
案例二:
var C2 = Backbone.Collection.extend(
initialize: function(){
vent.on('appointment:selected', this.apptSelected, this);
},
appSelected: function(apptProps){
...
}
);
据我了解,Bbone 在用户交互方面的理念是操纵数据而不是修改标记,其想法是数据变化级联到视图。如果是这样,原始问题的答案是 CASE 2?