来自Rails背景,您可以拥有多个布局 - 例如,匿名用户页面,然后是经过身份验证的页面。
Ember可以实现吗?
我尝试在我的UsersRouter中声明一个新的templateName,但没有用。
我还查看过本指南:http://emberjs.com/guides/views/adding-layouts-to-views/
但它似乎不起作用:/
答案 0 :(得分:6)
您可以在{{render}}
帮助程序中使用if
来显示不同的布局。
例如,如果您的ApplicationController
有login
和logout
动作处理程序,并且有相应的`loggedIn'属性。
App.ApplicationController = Ember.Controller.extend({
loggedIn: false,
login: function() {
this.set('loggedIn', true);
},
logout: function() {
this.set('loggedIn', false);
}
});
您可以像这样绑定到应用程序模板中的loggedIn
属性。
<script type='text/x-handlebars' data-template-name='application'>
<button {{action login }}>Login</button>
<button {{action logout }}>Logout</button>
{{#if loggedIn}}
{{render 'user'}}
{{else}}
{{render 'guest'}}
{{/if}}
</script>
其中user
和guest
是相应的模板。
<script type='text/x-handlebars' data-template-name='user'>
<h1>User layout</h1>
<div class='box user'>
{{outlet}}
</div>
</script>
<script type='text/x-handlebars' data-template-name='guest'>
<h1>Guest layout</h1>
<div class='box guest'>
{{outlet}}
</div>
</script>
这是一个有效的jsbin。
编辑:要不使用基于某些静态条件的应用程序路径或通过model
挂钩加载,您可以覆盖renderTemplate
的{{1}}方法。
ApplicationRoute