[英]Backbonejs - How to listen to a change in a collection that is part of a collection
我的應用程序由以下內容組成:
集合:
楷模:
SeatingChart具有“ Sections
作為屬性
A Sections
是Section
的集合
Section
具有Seats
作為屬性
一個Seats
是集合Seat
有沒有,里面的方式SeatingChart
聽時到Seat
被添加到的一個Section
在S SeatingChart
的Sections
?
我確定您知道Backbone確實提供了此功能。 因此,我假設您想提出有關如何連接此設備的建議。 遵循的解決方案將特定於您的設計。 對於一般情況,我建議您參考“骨干關系”
您已經放置了解決方案的第一部分,即保留對要跟蹤的集合的引用。 隨着關系的發展,這將派上用場。
但是,讓我們從底部開始。 這些問題詢問如何檢測何時添加了座位。 因此,讓我們定義Seats
集合:
var Seats = Backbone.Collection.extend({
initialize: function () {
this.setupListeners();
},
setupListeners: function () {
this.on('add', _.partial(this.bubbleAction, 'add'));
this.on('remove', _.partial(this.bubbleAction, 'remove'));
},
bubbleAction: function (action, model) {
this.trigger('seats-action' action, model);
}
})
現在, Sections
必須采取Seats
動作並將其冒泡。
var Sections = Backbone.Collection.extend({
initialize: function () {
this.setupListeners();
},
setupListeners: function () {
this.listenTo(this.seats, 'seats-action', this.bubbleSeatsAction);
},
bubbleSeatsAction: function (action, model) {
this.trigger('section:seats-action', this.sectionClass, action, model);
}
})
最后,在您的SeatingChart
集合中:
var SeatingChart = Backbone.Collection.extend({
initialize: function () {
this.setupListeners();
},
setupListeners: function () {
this.listenTo(this.sections, 'section:seats-action', this.handleSeatAction);
},
handleSeatAction: function (section, action, model) {
///Logic goes here to handle a seat action///
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.