我的应用程序由以下内容组成:
类别:
型号:
SeatingChart有Sections
作为属性
Sections
是Section
Section
有Seats
作为属性
Seats
是Seat
SeatingChart
Seat
Section
中SeatingChart
之一Sections
的{{1}}是否可以在ManyRelatedManager
内收听}?
答案 0 :(得分:0)
我确信您知道Backbone确实提供了开箱即用的功能。所以我假设你想要了解如何将这个东西连接起来。接下来的解决方案将特定于您的设计。为了概括,我建议你看看Backbone Relational
您已经放置了解决方案的第一个组件,即保留对您正在跟踪的集合的引用。随着我们提升关系,这将派上用场。
但是让我们从底部开始吧。问题询问如何检测何时添加座位。所以让我们定义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///
})