我发现了一些与Ember'需求相关的问题。控制器属性或我不了解实现目标的正确方法。
目标是能够从另一个控制器访问一个或多个控制器的内容。
例如,我有一条路线所有账户需要访问银行账户和信用账户的内容,以便它可以显示所有账户:)
问题是那些控制器的内容总是空的,除非您首先访问银行和信用帐户路线!
这是一个说明问题的jsbin:
答案 0 :(得分:2)
当您访问需要它的路线时,控制器只会自动填充它的模型。控制器可以不带模型存在。 needs
通常只应发生在上游,而不是兄弟资源/路线。
如果资源依赖于另一个资源,那么它应该是您的嵌套结构的一部分,或者同时获取。
this.resource('accounts', function(){
this.resource('bank-accounts');
.....
});
通常在您不一定需要嵌套路由的用例中,但是您确实需要多个资源,我从单个路由返回多个资源,或者在setupController
挂钩中设置多个控制器。 / p>
App.FooRoute = Em.Route.extend({
model: function(){
return Em.RSVP.hash({
cars: this.store.find('car'),
dogs: this.store.find('dog')
});
}
});
使用上述技术,您的控制器将是一个ObjectController,它具有两个属性cars
和dogs
,每个属性都是一个集合。
App.FooRoute = Em.Route.extend({
model: function(){
return this.store.find('car');
},
setupController: function(controller, model){
// this._super does the default implementation of setupController
this._super(controller, model);
this.controllerFor('dogs').set('model', this.store.find('dog'));
}
});
或者你可以在中间,混合和匹配中做点什么。