でネストされたコレクションで、モデル内の特定の属性の変化を聴く:私は、以下の骨格構造持つバックボーン
- collection[order_items]
- collection[menu_items]
- price
- quantity
を、私は量属性の変更をリッスンしたい、私はそれがで作業しました
var CheckoutView = Backbone.Marionette.ItemView.extend({
template: '#template-checkout',
initialize: function (options) {
this.order_collection = options.collection;
_(this.order_collection.models).each(function (element, index, list) {
this.listenTo(element.get("menu_items"), "change:quantity", this.onOrderItemsChanged);
}, this);
},
onOrderItemsChanged: function (model, val, options) {
console.log(model.get("name"));
}
});
しかし、マリオネットまたはバックボーンがそれを行うためのより良い方法を持っていない、代わりに親コレクションthroughtルーピングとそれぞれの子コレクションにリスナーを追加する、多分
のようなものthis.listenTo(this.order_collection, "change:menu_items:quantity", this.on OrderItemsChanged)
申し訳ありませんが、私はどのようにこの作品が表示されません。 'Collection.models'は生の配列であり、配列には' on'メソッドがありません。何か不足していますか? – ericsoco
@ericosocoは正しいですが、これはうまくいかず、どのように動作するのかわかりません。 – dvdplm
合意 - これは、.models.onではなく "this.order_collection.on"に更新する必要があると思います。 –