我试图用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时都不会呈现此模板?我应该遵循哪些步骤来确保使用应用程序呈现此菜单?
如果可能,导航菜单应该有自己的控制器和模板,以避免在应用程序控制器和模板中包含所有代码。
答案 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
中使用它,因为它是根路径,那么导航栏将始终可见。