【问题标题】:Include another template in the application.hbs在 application.hbs 中包含另一个模板
【发布时间】:2014-09-16 15:06:56
【问题描述】:

我正在使用带有 HandleBars 的 EmberJS 并使用 Yeoman 设置,(但我将依赖项更新到了最新版本)。

我有一个比较大的application.hbs,我想把它分成不同的文件,比如top-bars.hbs和main-content.hbs等等,然后我想把它们包含在application.hbs中。但我对它们没有任何意见,只是对大文件进行了一些分离,我不想对这些模板发出 ajax 请求,只想分离然后包含它们。

如何在 emberJS 中做到这一点?

【问题讨论】:

  • 试试{{render}} 助手
  • {{render}} 不太可能是您想要的。无论如何,以最简单的形式,它本质上创建了一个控制器/视图/模板的“岛”(尽管与 Ember 一样,除了该模板将在必要时自动生成)。特别是,{{render}} 将切断对周围视图和控制器的访问。正如@elrick 所说,您似乎很可能想要一个局部的,它本质上是一个词法包含。
  • 部分在 Ember 指南emberjs.com/guides/templates/rendering-with-helpers 中进行了描述,所以如果你已经经历过,你可能已经遇到过它们。如果您还没有通过它(Ember 指南),那么放下您正在做的所有其他事情,现在就去做。

标签: ember.js handlebars.js yeoman


【解决方案1】:

我认为您可能正在寻找的是部分。您要做的就是在您最想要的目录中创建一个部分文件,其中包含所有其他模板。解析器抱怨 Yeoman 中的前导下划线或破折号,所以如果一个炸毁,请尝试另一个,这主要是为了在查看文件时提供视觉指示,哪些是部分文件。所以制作_top-bars.hbs 并将你想要的代码放在那里。 application.hbs 中的 `{{partial "top-bars"}} 会在不改变范围的情况下将模板放入应用程序模板中。

【讨论】:

  • 这不是 ajax 吗?
  • 它与 ajax、控制器、视图、模型或其他任何与 Ember 或 Ember 数据相关的东西都没有关系。部分只是一种分离一些模板代码并将其保存在单独文件中的方法,然后在需要时将其带回并放入模板(或多个模板)中。
  • 不,先生,与 Ajax 无关。它只是一种可以用来制作局部的 ember 机制。 Ember 将查找模板并将其放置到位,无需 Ajax 调用。
猜你喜欢
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2015-11-30
  • 2018-02-02
  • 1970-01-01
相关资源
最近更新 更多