我正在尝试渲染一个模态.为此,我使用{{outlet modalOutlet}}我的应用程序模板创建了一个自定义插座,有两个插座,默认插座和modalOutlet.但是,当渲染模态模板时{{outlet modalOutlet}},我的默认值{{outlet}}变为空.
如何更改它,以便默认{{outlet}}不会更改,因此我实际上可以渲染{{outlet modalOutlet}}为模态窗口,或作为边栏作为布局的一部分
我不确定这是由于我的代码,还是renderTemplate()我遗漏的方法.我的代码的jsFiddle就在这里.
// Router
App.Router.map(function(){
this.route('contributors');
this.route('contributor', {path: '/contributors/:contributor_id'});
});
App.ContributorsRoute = Ember.Route.extend({
model: function() {
return App.Contributor.all();
},
});
App.ContributorRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('contributor', {
outlet: 'modalOutlet'
});
}
});
<script type="text/x-handlebars" data-template-name="application">
<nav>
{{#linkTo "index"}}Home{{/linkTo}}
{{#linkTo "contributors"}}Contributors{{/linkTo}}
</nav>
<div style='padding:5px;margin:5px;border:1px dotted red;'>
Default Outlet
{{outlet}}
</div>
<div style='padding:5px;margin:5px;border:1px dotted blue;'>
modalOutlet
{{outlet modalOutlet}}
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
contributors您还必须渲染模板,因为当您转换到同级路由时,默认出口会被清除。
App.ContributorRoute = Ember.Route.extend({
renderTemplate: function() {
this.render('contributors');
this.render('contributor', {
outlet: 'modalOutlet'
});
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如果您像这样嵌套路由,则可以避免这种情况:
App.Router.map(function(){
this.resource('contributors', function() {
this.route('show', {path: ':contributor_id'});
});
});
Run Code Online (Sandbox Code Playgroud)
...并调整应用程序的其余部分以匹配新结构。modalOutlet在这种情况下,您需要使用选项指定所在位置into(在本例中:'application')
| 归档时间: |
|
| 查看次数: |
2242 次 |
| 最近记录: |