以下のようなcollection
を取るビューがあります。
_MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change://an attribute of a model in aCollectionToRender", someAction);
}
});
var MyViewInstance = new MyView({
collection: aCollectionToRender
});
_
基本的に、MyView
がコレクション全体の変更をリッスンするのではなく、コレクションに含まれるモデルの1つの属性のみをリッスンします。
これにはいくつかの選択肢があることに気づきました。
aCollectionToRender
のモデルごとにビューを作成し、それらのビューに.on("change")
イベントを添付します。私の状況では正しくないので、これはしたくありませんthis.collection.on("change")
イベントを作成し、要件に基づいてイベントハンドラーフィルターを作成するだけです。これはあまりエレガントではなく、Backboneで上記のようにイベントフィルターを作成できる場合、これは重複コードです。すでにフィルタリングを行っているイベントリスナーを作成する方法があるかどうか疑問に思っていました。この質問も重複している可能性があります。見ましたが、このようなものは見つかりませんでしたが、バックボーンの質問がたくさんあります
多分私はあなたの質問を誤解しています、しかしあなたはあなたが示すことを正確に行うことができます。 バックボーンドキュメント を確認してください。
MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change:attributeName", this.someAction /*function to call*/, this);
},
someAction: function(model, value, options){
}
});