安贝& # 39;需要# 39;属性不能工作,除非你先访问所需的控制器路由
Ember 'needs' property doesn't work unless you visit the needed controllers route first
我遇到了一些问题,要么是烬的'需要'控制器属性的问题,要么是我不明白实现我的目标的正确方法。
目标是能够从另一个控制器访问一个或多个控制器的内容。
例如,我有一个路由All Accounts,它需要访问Bank Accounts和Credit Accounts的内容,以便它可以显示所有帐户:)
问题是那些控制器的内容总是空的,除非您先访问银行和信用帐户路由!
下面是一个说明问题的jsbin:
http://jsbin.com/yubul/1/edit?html、js、输出
只有当你访问需要它的路由时,控制器才会自动填充它的模型。控制器可以没有模型而存在。needs
通常应该只发生在上游,而不是兄弟资源/路由。
如果一个资源依赖于另一个资源,那么它应该是嵌套结构的一部分,或者同时获取。
this.resource('accounts', function(){
this.resource('bank-accounts');
.....
});
一般情况下,在用例中,你不一定需要一个嵌套的路由,但你确实需要多个资源,我从单个路由返回多个资源,或在setupController
钩子中设置多个控制器。
具有多个模型(属性)的模型
App.FooRoute = Em.Route.extend({
model: function(){
return Em.RSVP.hash({
cars: this.store.find('car'),
dogs: this.store.find('dog')
});
}
});
使用上述技术,您的控制器将是一个具有两个属性的ObjectController, cars
和dogs
,每个属性都将是一个集合。
setupController设置多个模型
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'));
}
});
或者你可以做一些介于两者之间的事情,混合和匹配。
相关文章:
- 如何从AngularJs中的另一个控制器访问控制器
- MVC+访问控制器中的隐藏字段
- 当指令中已经给定作用域时,如何访问控制器中声明的函数
- angularjs:指令的访问控制器
- AngularJS:访问控制器中的单选按钮值更改
- 使用 angularjs 访问控制器中的 ng-model 数据
- 角度嵌入和访问控制器范围
- 无法从具有隔离作用域的指令中访问控制器中定义的对象
- 我需要做什么才能访问控制器中的全局数据
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- AngularJS - 访问控制器内的指令对象
- Angular 1.5:访问控制器内部的绑定控制器属性
- 从 $scope 上的函数访问控制器内的实例函数
- Angular - 编译指令后无法访问控制器方法
- 如何访问控制器内的工厂方法
- 从视图访问控制器值的 Grails
- 从 Angular UI 路由访问控制器
- 在 Javascript 中访问控制器变量的最佳方法是什么?
- 代码点火器始终希望 index.php 访问控制器
- 我在从我的指令 Angular 访问控制器的范围时遇到问题