作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个路由器
:
// app/router.js
Router.map(function() {
this.route('battle', function(){
this.route('combats');
})
});
在战斗 route ,我可以使用以下方式轻松访问战斗模型:
// 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}}
我已经解决了从战斗路线向战斗 Controller 发送属性的问题:
// app/routes/battle/combat.js
setupController: function(controller, model) {
controller.set('content', model);
controller.set('battle', this.modelFor('battle'));
}
但我不知道这是否是正确的方法,在我看来,它看起来太间接了,就像您必须制定一个很长的解决方法才能使该属性在模板中可用。
最佳答案
这取决于您希望代码的通用程度。对于您的特殊用例,可能适合在 combats.js
的模型 Hook 中使用 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}}
关于javascript - EmberJS,如何在子模板中访问父 Controller 中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395619/
我是一名优秀的程序员,十分优秀!