在我的項目,我有以下三種模式:Ember.js - 綁定到另一個控制器的模式
- 俱樂部模式:代表一個體育俱樂部。它有一個
clubMeta
和許多customCourts
。 - ClubMeta模型:與應用程序相關的俱樂部相關信息。
- CustomCourt型號:屬於
club
。 A 俱樂部應該有customCourts只有如果clubMeta.customCourtsEnabled
是true
。
俱樂部
var Club = DS.Model.extend({
... bunch of properties ...
clubmeta: DS.belongsTo('App.Clubmeta'),
customCourts: DS.hasMany('App.CustomCourt')
});
module.exports = Club;
Clubmeta
var Clubmeta = DS.Model.extend({
... bunch of properties ...
customCourtsEnabled: DS.attr('boolean'),
club: DS.belongsTo('App.Club')
});
module.exports = Clubmeta;
CustomCourt
var CustomCourt = DS.Model.extend({
name: DS.attr('string'),
glass: DS.attr('boolean'),
indoor: DS.attr('boolean'),
single: DS.attr('boolean'),
club: DS.belongsTo('App.Club')
});
module.exports = CustomCourt;
我需要做的是一個模板,其中俱樂部(這是登錄用戶)可以添加customCourts只有在clubmeta.customCourtsEnabled
是true
。正如我在another SO question中告訴我的,我應該使用ArrayController
來處理CustomCourts
。
一切正常,直到這一點,問題就來了,因爲CustomCourtsController
需要了解俱樂部和clubmeta。我曾經嘗試這樣做,有一些變化的綁定路徑:
var ClubCourtsController = Ember.ArrayController.extend({
needs: ['currentClub'],
customCourtsEnabledBinding: Ember.Binding.oneWay("App.currentClubController.content.clubmeta.customCourtsEnabled"),
...
});
CurrentClubController
var CurrentClubController = Ember.ObjectController.extend({
init: function() {
this._super();
console.log('Retrieving club ' + App.clubId);
this.set('content', App.Club.find(App.clubId));
}
});
module.exports = CurrentClubController;
但ClubCourtsController.customCourtsEnabled
總是返回undefined。什麼是正確的方法來做到這一點?
最好的,邁克。答案中提供了非常有用的信息,現在就開始工作。 – 2013-03-12 14:43:56