Backbone.js を初めて使用するので、これが正しいかどうかはわかりません。
2 つのモデルを持つ 2 つのビューがあり、イベント アグリゲーターメソッドを使用して 2 つの間でイベントを発生させたいと考えています。
アグリゲーター宣言:
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
で、最初のビューがモデルを認識しないという利点が失われます。助言がありますか?