鉴于这些模板
<script type="text/x-handlebars">
<h3>Application outlet:</h3>
<div class="outlet">
{{outlet}}
<div>
<h3><code>'base'</code> outlet:</h3>
<div class="outlet base-outlet">
{{outlet 'base'}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="index">
<h1>I am the application index, I should be in the application outlet.</h1>
</script>
<script type="text/x-handlebars" data-template-name="foo">
<p>I am foo, I have my own outlet here:</p>
<h3>Foo Outlet:</h3>
<div class="outlet foo-outlet">
{{outlet}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="foo/index">
<p>I am foo index, I should be inside <code>#foo-outlet</code> (green border)</p>
</script>
这些路线:
App.Router.map(function() {
this.resource('foo', function() {
this.resource('bar');
});
});
App.IndexRoute = Ember.Route.extend({
afterModel: function() {
this.transitionTo('foo.index');
}
});
App.FooRoute = Ember.Route.extend({
renderTemplate: function() {
this.render({into: 'application', outlet: 'base'});
}
});
我希望foo/index
模板{{outlet}}
在模板中呈现foo
,但是它被呈现到应用程序出口中,这里有一个活生生的例子:http: //jsbin.com/yecatu/6/edit ?html,js,output
请注意,如果我调用this._super()
inrenderTemplate
我会foo/index
在正确的位置得到那种,但foo
模板会呈现两次。
更新:我想要达到的目标如下:
- 应用程序有一个命名的出口,比方说
'sidebar'
- 路由可以将包装器渲染到包含其自己(未命名)出口的侧边栏出口中
- 然后该路由的子路由应呈现在包装器内的出口中。
所以在上面的例子中,foo
路由应该将它的包装器渲染到'base'
出口中,然后它的子路由的内容(foo/index
在示例中)应该在该包装器内的出口中渲染(在示例中具有类foo-outlet
的那个)。