【发布时间】:2018-12-17 06:32:40
【问题描述】:
我正在关注 Ember 2.3 的文档,但似乎找不到任何非常基本的东西:如何访问主模板中路由模型挂钩提供的值:application.hbs?
routes/client.js
// ...
export default Ember.Route.extend({
model() {
return {
navigation: [
{
title: "Projects",
link: "projects"
},
{
title: "My Specifications",
link: "specs"
}
]
}
}
});
templates/application.hbs
<nav>
{{#each navigation as |navItem|}}
<li>{{#link-to navItem.link}} {{navItem.title}} {{/link-to}}</li>
{{/each}}
</nav>
{{outlet}}
现在,导航对象可以被路由模板 (client.hbs) 访问,但不能被应用程序模板访问。
【问题讨论】:
-
首先你应该在模板中使用 {{#each model.navigation ...}} 来引用模型数据。其次,每条路线都对应其模板。在您的情况下,您需要应用程序路由来显示应用程序 hbs 中模型的数据。
-
这正是我不感兴趣的,@kristjan。我有一个(非常常见的)情况,我需要一个通常的路线来提供要在父模板(application.hbs)内访问的数据。例如活动导航列表。
-
@Slavic 每个模板都有自己的路由是 ember 方式。约定优于配置,但如果您想在应用程序路由中显示导航模型,为什么不为您的应用程序路由返回多个模型?
-
@Craicerjack 假设我想遵循 ember 的方式,我该如何解决手头的问题?问题仍然存在:application.hbs 甚至没有自己的路由器,即使有,它的路由器也不知道数据,因为根据问题的定义,数据是特定于子路由的。跨度>
-
您能否提供一些额外的文字您想要实现的目标。也许有更好的方法来解决您的问题以及您从错误的角度看待它。因为你现在在做什么对我来说没有任何意义。
标签: javascript ember.js ember.js-2