在Ember.js中是否有一个与布局nil等效的布局?
我有一个余烬应用程序,它有一个相当复杂的应用程序模板,每个页面都包含一个音频播放器、移动抽屉、标题等 我的登录页面需要能够有自己的模板,没有这些东西。在Ruby中,我可以简单地执行layout=>nil来不使用应用程序模板,但我找不到一种方法来实现这一点 我不想只隐藏这一页上没有使用的所有元素,也不想每隔一页就显式地包含这些元素。有什么建议吗?您可以使用来定义,以便您可以指定哪些插座将连接到特定路线的视图/模板/模式/控制器 比如说 假设我有一个模板:在Ember.js中是否有一个与布局nil等效的布局?,ember.js,Ember.js,我有一个余烬应用程序,它有一个相当复杂的应用程序模板,每个页面都包含一个音频播放器、移动抽屉、标题等 我的登录页面需要能够有自己的模板,没有这些东西。在Ruby中,我可以简单地执行layout=>nil来不使用应用程序模板,但我找不到一种方法来实现这一点 我不想只隐藏这一页上没有使用的所有元素,也不想每隔一页就显式地包含这些元素。有什么建议吗?您可以使用来定义,以便您可以指定哪些插座将连接到特定路线的视图/模板/模式/控制器 比如说 假设我有一个模板: <script type="text
<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'
});
}
});
(见附件)
根据本规范,在“右路线”上,仅显示“中心”中的内容,“南出口”将为空。“空白路线”将加载到没有任何模板标记的出口中
我知道这看起来需要很多努力,但这只是一个概念性的例子,我相信可以改进