EmberJS,如何在子模板中访问父控制器中的模型
EmberJS, How access in a child template to the model in the parent controller
我有这个router
:
// app/router.js
Router.map(function() {
this.route('battle', function(){
this.route('combats');
})
});
在战斗路线中,我可以使用轻松访问战斗模型
// app/routes/battle/combat.js
this.modelFor('battle');
但如果我想在战斗模板中访问这个模型,事情就会变得复杂:
// app/templates/battle/combats.hbs
<h1>Combats for Battle {{<how to access to the battle>.title}}</h1>
{{#each model as |combat|}}
{{combat.date}}
{{/each}}
我已经解决了从作战路线向作战控制员发送属性的问题:
// app/routes/battle/combat.js
setupController: function(controller, model) {
controller.set('content', model);
controller.set('battle', this.modelFor('battle'));
}
但我不知道这是否是正确的方式,在我看来,它看起来太过间接,就像你必须做出一个很长的变通办法才能在模板中使用这个属性。
这取决于您希望代码的通用性。对于您的特殊用例,可能适合在combats.js
中的模型挂钩中使用Ember.RSVP.hash,如下所示:
model(){
return Ember.RSVP.hash({
combats: //here your combat.js model code,
battle: this.modelFor('battle');
})
}
然后您可以删除setupController函数并将模板重写为:
<h1>Combats for Battle {{model.battle.title}}</h1>
{{#each model.combats as |combat|}}
{{combat.date}}
{{/each}}
相关文章:
- 如何从AngularJs中的另一个控制器访问控制器
- MVC+访问控制器中的隐藏字段
- 当指令中已经给定作用域时,如何访问控制器中声明的函数
- angularjs:指令的访问控制器
- AngularJS:访问控制器中的单选按钮值更改
- 使用 angularjs 访问控制器中的 ng-model 数据
- 角度嵌入和访问控制器范围
- 无法从具有隔离作用域的指令中访问控制器中定义的对象
- 我需要做什么才能访问控制器中的全局数据
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- AngularJS - 访问控制器内的指令对象
- Angular 1.5:访问控制器内部的绑定控制器属性
- 从 $scope 上的函数访问控制器内的实例函数
- Angular - 编译指令后无法访问控制器方法
- 如何访问控制器内的工厂方法
- 从视图访问控制器值的 Grails
- 从 Angular UI 路由访问控制器
- 在 Javascript 中访问控制器变量的最佳方法是什么?
- 代码点火器始终希望 index.php 访问控制器
- 我在从我的指令 Angular 访问控制器的范围时遇到问题