Layout 在Ember.js中有多个布局?
来自Rails背景,您可以有多个布局——比如说,匿名用户页面,然后是经过身份验证的页面 余烬能做到这一点吗 我尝试在UsersRouter中声明一个新的templateName,但没有成功 我还查看了本指南:Layout 在Ember.js中有多个布局?,layout,ember.js,Layout,Ember.js,来自Rails背景,您可以有多个布局——比如说,匿名用户页面,然后是经过身份验证的页面 余烬能做到这一点吗 我尝试在UsersRouter中声明一个新的templateName,但没有成功 我还查看了本指南: 但是它似乎不起作用:/您可以在if助手中使用{{render}}来显示不同的布局 例如,如果您有一个ApplicationController,它具有login和logout操作处理程序,以及相应的“loggedIn”属性 App.ApplicationController = Ember
但是它似乎不起作用:/您可以在
if
助手中使用{{render}}
来显示不同的布局
例如,如果您有一个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>
这是一张工作票
编辑:要不使用基于某些静态条件或通过model
挂钩加载的应用程序路由,可以覆盖ApplicationRoute
的renderTemplate
方法
App.ApplicationRoute = Ember.Route.extend({
renderTemplate: function() {
var loggedIn = false;
if (loggedIn) {
this.render('user');
} else {
this.render('guest');
}
}
});
你能展示一下你尝试过但不起作用的东西吗?啊。。。可以因此,不管怎样,您必须在应用程序模板本身内完成所有工作?澄清一下:比如说,没有办法拥有一个应用程序模板和一个管理模板。相反,您必须有一个应用程序模板,该模板包含用于呈现特定子模板的特定逻辑。对吗?不一定。我以应用程序模板为例。您也可以在路由特定的模板中执行此操作。啊,好的-因此是路由特定的模板。因此,如果我有路由:
App.Router.map,function(){
this.resource(“用户”)
})代码>我可以将此路由设置为不使用应用程序模板吗?否应用程序模板是父容器模板(类似于所有内容的通用布局)。您可以像上面那样或通过hook方法在路由中更改用于渲染用户的模板。
App.ApplicationRoute = Ember.Route.extend({
renderTemplate: function() {
var loggedIn = false;
if (loggedIn) {
this.render('user');
} else {
this.render('guest');
}
}
});