Ember.js - 渲染到插座的默认模板?

时间:2013-08-04 18:31:29

标签: ember.js

所以我有一个类似于以下内容的页面

[ Nav Bar ]

|         |
| Content |
|         |

导航栏我希望在所有页面中保持不变。所以我使用的方法是按如下方式设置我的页面:

[ Nav Bar ]

{{outlet}}

这很棒,我现在可以将不同的页面呈现在不同路线的插座中。

但是如果我想将默认模板渲染到我的主页的插座中呢?

我设法通过将/重定向到/home来实现这一目标,但必须有更好的方法来执行此操作,这样我才能在/处呈现默认主页重新路由?

任何建议表示赞赏,

谢谢, 丹尼尔

3 个答案:

答案 0 :(得分:7)

要在根页面的{{outlet}}中呈现内容,您必须为索引定义处理程序栏脚本:

您的导航栏代码可能如下所示:

<script type="text/x-handlebars">
  <div class="navbar ...">
    ...
  </div>

  {{outlet}}
</script>

将放置在{{outlet}}内的根页是暂停的:

<script type="text/x-handlebars" id="index">
    <div class="container">
      <h1>Root page!!</h1>
    </div>
</script>

换句话说,您必须创建一个具有id =“index”的手柄脚本。

应该有效。它不需要任何js代码。

答案 1 :(得分:1)

我必须承认此属性没有详细记录并隐藏在Ember.View的文档中,但您可以尝试在defaultTemplate上设置ApplicationView属性。有关详细信息,请参阅here(在“defaultTemplate”页面中搜索)。

希望它有所帮助。

答案 2 :(得分:0)

文档中的以下陈述帮助我解决了问题中所述的完全相同的问题: Ember routing docs

  

索引模板将呈现到应用程序模板中的{{outlet}}。如果用户导航到/ favorites,Ember将使用收藏夹模板替换索引模板。

当我在项目中使用pod结构时,我创建了一个具有默认模板的索引路径,并在我的application / template.hbs文件中放置了nav-bar组件。

应用/应用/ template.hbs:

<div id="pageWrapper">
    <div id="navbarfixed">{{nav-bar options=options}}</div>
    <div id="pageContent">
        {{outlet}}
    </div>
</div>

应用/索引/ template.hbs

<div id="homeWrapper"> <!--This gets rendered by default in outlet above-->
Some default content of outlet
</div>