Javascript Ember js链接模板包括

Javascript Ember js链接模板包括,javascript,templates,ember.js,Javascript,Templates,Ember.js,我正致力于构建简单的Ember js模板链接,由于我对Ember有些陌生,而且我来自PHP背景,因此我尝试根据PHP经验构建将Ember模板包含在另一个模板中的想法,例如: <script type="text/x-handlebars" id="top-nav">HTML HEADER</script> <script type="text/x-handlebars" id="index">{{render 'top-nav'}} HTML body<

我正致力于构建简单的Ember js模板链接,由于我对Ember有些陌生,而且我来自PHP背景,因此我尝试根据PHP经验构建将Ember模板包含在另一个模板中的想法,例如:

<script type="text/x-handlebars" id="top-nav">HTML HEADER</script>
<script type="text/x-handlebars" id="index">{{render 'top-nav'}} HTML body</script>
HTML标题
{{render'top nav'}}HTML正文

其背后的想法是,我希望“顶级导航”模板包含在每个余烬模板中。我知道{{outlet}}在类似的情况下也能工作,但它不会提供代码行数少的灵活性

我的问题是:有没有更合理的方法将模板插入到模板中


谢谢。

在另一个模板中插入模板的最佳方法就是使用视图

{{view 'top-nav'}}
定义您的模板,如:

<script type="text/x-handlebars" data-template-name="top-nav">
... template markup
</script>
就这样。您可以在此处找到有关它的更多文档:

编辑

正如@GJK所指出的,如果您使用的是Ember 1.13或更高版本,那么从Ember 1.13开始,视图已被弃用。我建议您改用组件

{{top-nav}}
组件的工作方式与视图过去的工作方式类似。你可以在这里找到更多关于他们的信息。最终,这取决于您使用的是什么版本的余烬

是否有更合理的方法将模板插入模板

这正是partials的用途。您可以阅读有关部分模板的更多信息。要点是您希望使用以
开头的文件名创建可重用零件。例如:

{{! _header.hbs }}
<header>
    <nav>...</nav>
</header>
这将确保所有页面都具有所需的标题,因为每个顶级模板都将在outlet内部呈现


如果您在决定使用什么时遇到困难,请使用partials,直到遇到问题。在这一点上,您可能会更有能力处理应用程序模板和复杂的模板结构。

请注意,视图在Ember 1.13中被弃用,而在Ember 2.0中被完全删除(有一个兼容性插件,但并不打算长期使用)。“但它不会提供代码行数较少的灵活性”。它怎么可能比写
{{outlet}}
短呢?你能澄清你的担忧吗?
{{! _header.hbs }}
<header>
    <nav>...</nav>
</header>
{{! application.hbs }}
<header>
    <nav>...</nav>
</header>

{{outlet}}