Emberjs:每页都不包含全局菜单

时间:2015-11-30 09:41:44

标签: ember.js

我试图用emberjs创建一个全局菜单。在these instructions之后,我写了一个controller/navigation.js和一个views/navigation.hbs来渲染控制器中定义的固定菜单。

然后我在application.hbs中渲染导航模板,如下所示:

<nav class="navbar-default navbar-static-side" role="navigation">
    <div class="sidebar-collapse">
        {{render 'navigation'}}
    </div>
</nav>

当我在根网址加载应用程序时,菜单会按原样呈现。但是,只要我在其他地方导航(例如,通过单击菜单的元素),菜单就不再渲染,如果我稍后导航回主页,导航菜单不会再次渲染。

为什么每次呈现application.hbs时都不会呈现此模板?我应该遵循哪些步骤来确保使用应用程序呈现此菜单?

如果可能,导航菜单应该有自己的控制器和模板,以避免在应用程序控制器和模板中包含所有代码。

1 个答案:

答案 0 :(得分:2)

您所关注的教程非常陈旧。例如,Ember 2.0上的views不再存在。

如果您想在整个应用中使用navbar,只需在application.hbs模板中直接编写或使用component创建即可。例如:

//application.hbs
<!-- your html code for your navigation menu -->
{{outlet}}

//application.hbs
{{!your component to render your navigation menu}}
{{outlet}}

{{outlet}}中加载当前路由的所有嵌套路由。如果您在application.hbs中使用它,因为它是根路径,那么导航栏将始终可见。