定义多个布局emberjs

时间:2014-03-02 22:44:32

标签: javascript ruby-on-rails ember.js

我正在构建一个emberjs应用程序我希望有两个不同的布局,例如应用程序模板和另一个模板,我不希望我的所有视图都在应用程序模板中呈现,就像在rails中指定有多个不同控制器的布局

2 个答案:

答案 0 :(得分:4)

实际上非常简单,只需指定要呈现的模板:

App.ApplicationRoute = Ember.Route.extend({
  renderTemplate: function() {
    if (expression) {
      this.render('application');
    } else {
      this.render('site');
    }
  }
});

通过http://emberjs.com/guides/routing/rendering-a-template/

答案 1 :(得分:1)

这是我从emberjs讨论论坛得到的答案

使用“layoutName”属性为两个布局创建两个视图:

  App.MainLayoutView = Ember.View.extend({ layoutName: 'layout/main', });

  App.SecondaryLayoutView = Ember.View.extend({
  layoutName: 'layout/secondary',
 });

为布局创建两个模板,称为“layout / main”和“layout / secondary”。

确保您的视图扩展了这些布局视图。例如,对以下路径配置进行成像:

 App.Router.map(function() {
 this.resource('users', function() { this.route('new'); 
this.route('login'); });

});

如果您希望所有用户路由使用MainLayout并登录以使用辅助布局,请创建两个视图:

 App.ProjectsView = App.MainLayoutView.extend();

 App.LoginView = App.SecondaryLayoutView.extend();

无需为“projects / new”创建视图,因为它是项目的嵌套路径,因此继承了Projects的布局。

希望它有所帮助!