Layout 在Ember.js中有多个布局?

Layout 在Ember.js中有多个布局?,layout,ember.js,Layout,Ember.js,来自Rails背景,您可以有多个布局——比如说,匿名用户页面,然后是经过身份验证的页面 余烬能做到这一点吗 我尝试在UsersRouter中声明一个新的templateName,但没有成功 我还查看了本指南: 但是它似乎不起作用:/您可以在if助手中使用{{render}}来显示不同的布局 例如,如果您有一个ApplicationController,它具有login和logout操作处理程序,以及相应的“loggedIn”属性 App.ApplicationController = Ember

来自Rails背景,您可以有多个布局——比如说,匿名用户页面,然后是经过身份验证的页面

余烬能做到这一点吗

我尝试在UsersRouter中声明一个新的templateName,但没有成功

我还查看了本指南:


但是它似乎不起作用:/

您可以在
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');
    }
  }
});