如何将模板渲染到另一个模板的插座中

时间:2013-12-27 22:44:21

标签: ember.js

我的应用程序将有一个侧边栏,其内容会根据当前路线而变化。因此,如果有人访问account,则边栏上的内容将与有人访问members时的内容不同。

我试图用accounts路线做这件事,但我遇到了问题。我正在使用此代码

Dashboard.AccountRoute = Ember.Route.extend({
        renderTemplate: function() {
                this.render('account_choices', {
                        outlet: 'choices',
                        into: 'sidebar'
                })
        }
});

我的application模板是:

{{render header}}

{{render sidebar}}

<div id="outlet" class="main">
        {{outlet}}
</div>

我的sidebar模板是:

<div class="sidebar">
        {{outlet choices}}
</div>

但它不会将account_choices呈现到choices模板中的插座sidebar。它还会产生错误Assertion failed: Error while loading route: TypeError: Cannot call method 'connectOutlet' of undefined

如何将account_choices模板呈现到choices的{​​{1}}商店?

1 个答案:

答案 0 :(得分:2)

这有点难以解释,但是整个路径都在前面连接,并且命名的出口sidebar在呈现之前不存在。幸运的是,您可以稍后在运行循环中连接渲染,然后dynamic named outlet将存在。

renderTemplate: function() {
  var self = this;
  Em.run.later(function(){
    self.render('account_choices', {
      outlet: 'choices',
      into: 'sidebar'
    });
  });
 }

http://emberjs.jsbin.com/azimigEF/1/edit