6

所以我有一个如下所示的页面

[ Nav Bar ]

|         |
| Content |
|         |

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

[ Nav Bar ]

{{outlet}}

太好了,我现在可以将不同的页面渲染到我的插座中以用于不同的路线。

但是,如果我希望将默认模板呈现到主页的插座中怎么办?

我已经设法通过重定向到来实现这一点/,但是必须有更好的方法来做到这一点,它允许我在不重新路由/home的情况下呈现默认主页?/

任何建议表示赞赏,

谢谢,丹尼尔

4

3 回答 3

7

要在根页面 / 的 {{outlet}} 中呈现内容,您必须为 index 定义一个 handlerbar 脚本:

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

<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 代码即可工作。

于 2013-08-04T19:28:11.420 回答
1

我必须承认这个属性没有很好的记录并隐藏在文档中,Ember.View但你可以尝试defaultTemplate在你的ApplicationView. 有关详细信息,请参见此处(在页面中搜索“defaultTemplate”)。

希望能帮助到你。

于 2013-08-04T19:20:34.917 回答
0

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

索引模板将被渲染到应用程序模板中的 {{outlet}} 中。如果用户导航到 /favorites,Ember 会将索引模板替换为收藏夹模板。

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

应用程序/应用程序/模板.hbs:

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

应用程序/索引/模板.hbs

<div id="homeWrapper"> <!--This gets rendered by default in outlet above-->
Some default content of outlet
</div>
于 2016-08-15T08:03:33.573 回答