Khi thay đổi "chartModel" của tôi, tôi muốn cập nhật "globalModel".Làm cho mô hình Backbone.js thay đổi "một phần" im lặng?
chartModel.bind("change", updateGlobalModel);
updateGlobalModel(){
globalModel.set(obj)
}
Và ngược lại, tôi muốn biểu đồ của tôi cập nhật khi globalModel thay đổi.
globalModel.bind("change", updateChartModel);
updateChartModel(){
chartModel.set(obj)
}
Điều này dẫn đến vòng phản hồi khi đặt globalModel. Tôi có thể ngăn chặn điều này bằng cách đặt {im lặng: true}.
Nhưng ở đây có vấn đề. Tôi có một mẫu mà phụ thuộc vào sự kiện thay đổi:
globalModel.bind("change", updateOtherModel);
Làm thế nào tôi có thể cảnh báo mô hình này của sự thay đổi nhưng không phải là cựu một (để tránh các vòng lặp phản hồi)?
UPDATE:
Còn bây giờ, tôi quyết định tạo ra một ID cụ thể cho mỗi cuộc gọi thiết lập:
set : function(attrs, options) {
if(!("setID" in attrs)){
attrs.setID = myApp.utils.uniqueID(); //newDate.getTime();
}
Backbone.Model.prototype.set.call(this, attrs, options);
},
Bằng cách này, tôi luôn có thể tạo ra một "setID" thuộc tính từ bất cứ nơi nào trong tôi ứng dụng. Nếu setID vẫn giống nhau khi tìm nạp thứ gì đó từ mô hình, tôi biết có thể có nguy cơ cho vòng lặp phản hồi.
Cảm ơn đề xuất của bạn - Tôi sẽ dùng thử nếu giải pháp thay thế của tôi không thành công (tôi đã cập nhật câu hỏi của mình). – dani