Ho la seguente struttura portante:ascoltare una specifica modifica degli attributi in un modello in una raccolta nidificato in Backbone
- collection[order_items]
- collection[menu_items]
- price
- quantity
e voglio ascoltare di eventuali modifiche di attributo quantità, ho ottenuto che funziona da
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"));
}
});
ma lo fa marionetta o spina dorsale hanno un modo migliore di farlo, invece di looping throught la raccolta genitore e aggiungendo l'ascoltatore ad ogni collezione bambino, forse qualcosa di simile
this.listenTo(this.order_collection, "change:menu_items:quantity", this.on OrderItemsChanged)
(che ha funzionato per me)
Siamo spiacenti, non vedo come funziona. 'Collection.models' è una matrice raw e la matrice non ha un metodo' on'. Mi sto perdendo qualcosa? – ericsoco
@ericosoco ha ragione, questo non funziona e non vedo come potrebbe funzionare. – dvdplm
D'accordo - Penso che questo dovrebbe essere aggiornato per essere "this.order_collection.on" piuttosto che .models.on. –