在Ember.js中是否有一个与布局nil等效的布局?

在Ember.js中是否有一个与布局nil等效的布局?,ember.js,Ember.js,我有一个余烬应用程序,它有一个相当复杂的应用程序模板,每个页面都包含一个音频播放器、移动抽屉、标题等 我的登录页面需要能够有自己的模板,没有这些东西。在Ruby中,我可以简单地执行layout=>nil来不使用应用程序模板,但我找不到一种方法来实现这一点 我不想只隐藏这一页上没有使用的所有元素,也不想每隔一页就显式地包含这些元素。有什么建议吗?您可以使用来定义,以便您可以指定哪些插座将连接到特定路线的视图/模板/模式/控制器 比如说 假设我有一个模板: <script type="text

我有一个余烬应用程序,它有一个相当复杂的应用程序模板,每个页面都包含一个音频播放器、移动抽屉、标题等

我的登录页面需要能够有自己的模板,没有这些东西。在Ruby中,我可以简单地执行layout=>nil来不使用应用程序模板,但我找不到一种方法来实现这一点

我不想只隐藏这一页上没有使用的所有元素,也不想每隔一页就显式地包含这些元素。有什么建议吗?

您可以使用来定义,以便您可以指定哪些插座将连接到特定路线的视图/模板/模式/控制器

比如说

假设我有一个模板:

<script type="text/x-handlebars">
    {{#if showTemplate}}
    <h1>App</h1>
        {{outlet center}}
        {{outlet south}}
    {{else}}
        {{outlet blank}}
    {{/if}}
</script>
App.LeftRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('left', {
            into: 'application',
            outlet: 'center'
        });

        this.render('south', {
            into: 'application',
            outlet: 'south'
        });
    }
});

App.RightRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('right', {
            into: 'application',
            outlet: 'center'
        });
    }
});
我可以指定在应用程序模板下的哪个插座中加载哪些模板:

<script type="text/x-handlebars">
    {{#if showTemplate}}
    <h1>App</h1>
        {{outlet center}}
        {{outlet south}}
    {{else}}
        {{outlet blank}}
    {{/if}}
</script>
App.LeftRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('left', {
            into: 'application',
            outlet: 'center'
        });

        this.render('south', {
            into: 'application',
            outlet: 'south'
        });
    }
});

App.RightRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('right', {
            into: 'application',
            outlet: 'center'
        });
    }
});
对于这个特定的路由,我通过
controllerFor
ApplicationController
中设置
layout
属性,这将导致应用程序模板删除其他模板

App.BlankRoute = Em.Route.extend({
    setupController: function(controller, model) {
        var c = this.controllerFor('application');
        c.set('layout', false);
    },
    renderTemplate: function() {
        this.render('blank', {
            into: 'application',
            outlet: 'blank'
        });
    }
});
(见附件)

根据本规范,在“右路线”上,仅显示“中心”中的内容,“南出口”将为空。“空白路线”将加载到没有任何模板标记的出口中

我知道这看起来需要很多努力,但这只是一个概念性的例子,我相信可以改进。

您可以使用它来定义,以便您可以指定哪些插座将连接到特定路线的视图/模板/模式/控制器

比如说

假设我有一个模板:

<script type="text/x-handlebars">
    {{#if showTemplate}}
    <h1>App</h1>
        {{outlet center}}
        {{outlet south}}
    {{else}}
        {{outlet blank}}
    {{/if}}
</script>
App.LeftRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('left', {
            into: 'application',
            outlet: 'center'
        });

        this.render('south', {
            into: 'application',
            outlet: 'south'
        });
    }
});

App.RightRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('right', {
            into: 'application',
            outlet: 'center'
        });
    }
});
我可以指定在应用程序模板下的哪个插座中加载哪些模板:

<script type="text/x-handlebars">
    {{#if showTemplate}}
    <h1>App</h1>
        {{outlet center}}
        {{outlet south}}
    {{else}}
        {{outlet blank}}
    {{/if}}
</script>
App.LeftRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('left', {
            into: 'application',
            outlet: 'center'
        });

        this.render('south', {
            into: 'application',
            outlet: 'south'
        });
    }
});

App.RightRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('right', {
            into: 'application',
            outlet: 'center'
        });
    }
});
对于这个特定的路由,我通过
controllerFor
ApplicationController
中设置
layout
属性,这将导致应用程序模板删除其他模板

App.BlankRoute = Em.Route.extend({
    setupController: function(controller, model) {
        var c = this.controllerFor('application');
        c.set('layout', false);
    },
    renderTemplate: function() {
        this.render('blank', {
            into: 'application',
            outlet: 'blank'
        });
    }
});
(见附件)

根据本规范,在“右路线”上,仅显示“中心”中的内容,“南出口”将为空。“空白路线”将加载到没有任何模板标记的出口中

我知道这看起来需要很多努力,但这只是一个概念性的例子,我相信可以改进