Tôi đã cấu trúc xương sống sau:Nghe một thay đổi thuộc tính cụ thể trong một mô hình trong một bộ sưu tập lồng nhau trong Backbone
- collection[order_items]
- collection[menu_items]
- price
- quantity
và tôi muốn lắng nghe bất kỳ thay đổi trong các thuộc tính số lượng, tôi đã nhận nó làm việc bằng cách
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"));
}
});
Nhưng liệu con rối hoặc xương sống có một cách tốt hơn để làm việc đó, thay vì lặp nghĩ các bộ sưu tập phụ huynh và thêm người nghe cho mỗi bộ sưu tập con, có lẽ cái gì đó như
this.listenTo(this.order_collection, "change:menu_items:quantity", this.on OrderItemsChanged)
(mà didnt làm việc cho tôi)
Rất tiếc, tôi không thấy cách hoạt động của tính năng này. 'Collection.models' là một Array thô và Array không có phương thức' on'. Tui bỏ lỡ điều gì vậy? – ericsoco
@ericosoco đúng, điều này không hiệu quả và tôi không thấy nó hoạt động như thế nào. – dvdplm
Đồng ý - Tôi nghĩ rằng điều này sẽ được cập nhật thành "this.order_collection.on" thay vì .models.on. –