我不确定我是否做对了,第一次玩 Backbone.js。
我有两个带有两个模型的视图,我想使用事件聚合器方法在两者之间触发事件。
聚合器声明:
Backbone.View.prototype.eventAggregator = _.extend({}, Backbone.Events);
所以在一个视图中,我有一条这样的行会触发该removeRow
方法。
this.eventAggregator.trigger("removeRow", this.row);
在另一个视图中
MyView = Backbone.View.extend({
initialize: function() {
this.eventAggregator.bind("removeRow", this.removeRow);
this.model.get("rows").each(function(row) {
// Do stuff
});
},
removeRow: function(row) {
// row is passed in fine
// this.model is undefined
this.model.get("rows").remove(row);
}
});
我想我明白为什么this.model
是未定义的,但我能做些什么来维护一个引用,以便我可以this.model
在回调中使用?我曾考虑将模型传递给第一个视图,然后在trigger
调用中将其传回,但这似乎使事件聚合器的全部意义变得毫无意义。如果我有模型,我可以直接调用该.remove
方法并且失去了我的第一个视图不知道模型的好处。有什么建议么?