Ember如何在不影响正常行为的情况下添加额外的命名插座进行查看

时间:2013-02-16 23:30:45

标签: view ember.js outlet

我正在尝试在我的索引页面中再渲染三个outlet,一切正常,但是一旦我设置了至少一个插座,正常行为就会中断。更清楚的是我正在做的事情

我的IndexRoute路线

renderTemplate: function() {
    this._super();
    this.render('header', { into: 'index', outlet: 'header' });
    this.render('sidebar', { into: 'index', outlet: 'sidebar' });
    this.render('right_side', { into: 'index', outlet: 'right_side' });
}

现在我的路由已映射,因此index是一个资源,并包含其中的所有其他路由。我的视图包含所有设置为渲染的outlet和一个未命名的插座,这会导致出现问题。

如果我没有明确指出要渲染的内容以及IndexRoute中的位置,那么一切正常,我的模板在我的未命名插座中呈现,链接工作正常,未命名的插座获取正确的内容,但一旦我设置虽然我打电话给_super(),但未命名的出口停止获取任何内容。

所以我的问题是如何在不干扰同名resource的未命名插座的正常工作的情况下设置其他命名插座?

更新

示例 http://jsfiddle.net/drulia/jM6js/

1 个答案:

答案 0 :(得分:1)

我不确定多个outlets的问题是什么,但是我使用partial帮助程序才能使用它。

<script type="text/x-handlebars" data-template-name="index">
 {{#linkTo index/foo}}Go to Foo{{/linkTo}} <br>
 {{#linkTo index/bar}}Go to Bar{{/linkTo}} <hr>
 text inside index template
 <hr>
 {{outlet}}
 {{render "sidebar"}}
</script>

这是jsfiddle

<强>更新

jsfiddle已更新为使用{{render}}帮助程序而不是{{partial}}

如果您使用的是{{partial}}助手,则会使用现有的上下文。如果需要重用模型/控制器,最好使用{{render}},因为它会为您创建新的视图/控制器/模板上下文。然后,您可以使用modelForcontrollerFor个钩子。