2013-08-04 49 views
6

所以我有一个页面,它看起来像下面Ember.js - 渲染到插座的默认模板?

[ Nav Bar ] 

|   | 
| Content | 
|   | 

的导航栏我想在所有的网页不变。所以我使用的方法是设置我的页面,如下所示:

[ Nav Bar ] 

{{outlet}} 

这是伟大的,我现在可以呈现不同的网页在我的出路不同的路线。

但是如果我想要一个默认模板被渲染到我的主页的出口?

我已经成功通过重定向//home实现这一目标,但必须有一个更好的方式来做到这一点,让我在渲染一个/默认主页,而无需重新布线?

赞赏任何意见,

感谢, 丹尼尔

回答

7

要渲染的东西在{{口}}在根页/,你必须定义一个handlerbar脚本指数:

你的导航栏的代码可能是这样的:

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

    {{outlet}} 
</script> 

的这将是内部发生根页面{{口}}是休耕:

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

换句话说,你必须创建一个车把脚本,将有一个id =“指数”。

应该工作。它不需要任何js代码来工作。

+1

感谢您的回答。不幸的是,我已经有一个'索引'模板 - 这是包含导航栏和插座的模板... – bluepnume

+0

然后,你应该只需要移动没有任何id或数据模板的手柄内的导航栏-名称。检查这个:http://jsfiddle.net/jorat1346/8tvRj/1/ 你有主页上的内容,为什么这个模型不起作用。 – darkzangel

+0

正确 - 我的建议是,我有一个模型,我需要用来填充导航栏,但由于路由器似乎没有被调用的应用程序(只有'索引'),我无处可以填充我的模型。 尽管如此,我想我可以通过创建MyApp.ApplicationController并在init()中填充模型来解决此问题。 感谢所有的建议,将尝试一些这一点。 – bluepnume

1

我必须承认这个属性不会有据可查的,并埋在文档的Ember.View但你可以尝试设置你的ApplicationViewdefaultTemplate财产。有关更多信息,请参阅here(在'defaultTemplate'页面中搜索)。

希望它有帮助。

+0

感谢您的建议。以上述答案结束,但这也有帮助。 – bluepnume

0

在文档下面的语句帮我解决正是我在这问题陈述了同样的问题: Ember routing docs

指数模板将在被渲染到{{口}}应用模板。如果用户导航到/收藏夹,Ember将使用收藏夹模板替换索引模板。

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

应用程序/应用/ template.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>