gpt4 book ai didi

javascript - EmberJS,如何在子模板中访问父 Controller 中的模型

转载 作者:行者123 更新时间:2023-12-03 08:05:39 25 4
gpt4 key购买 nike

我有这个路由器:

// 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com