直接访问Ember路线时,模板呈现乱序

时间:2014-09-14 21:27:54

标签: javascript ember.js url-routing

Here's a JSBin展示了我遇到的问题。 This is the code为此。

我遇到过这种情况,如果我在加载应用程序后导航到Ember.js中的路线(例如使用transitionTo),一切正常。但是,如果我尝试直接导航到路线(通过输入网址或在我已经在路线上后刷新页面),它就无法正确渲染。

我使用renderTemplate将模板放入父路线。但是直接访问路径时尚未呈现父路由,因此它在控制台中出现以下错误时失败:

Cannot read property 'connectOutlet' of undefined

如何确保父路线的模板到位以避免此错误?

1 个答案:

答案 0 :(得分:1)

当您以编程方式将模板渲染到另一个模板时,必须已经渲染了另一个模板。您可以将其安排在渲染完成后进行渲染。

App.BarRoute = Ember.Route.extend({
  renderTemplate: function() {
    var self = this;
    Em.run.schedule('afterRender', function(){
      self.render('bar', {into: 'baz'});
    });
  }
});

示例:http://jsbin.com/qilem/1#/bar

真的,你在这里重击战斗机路由器。应用程序模板应该在其中定义{{outlet}},但是当您使用渲染时,您已经创建了一个嵌套范围,其中应用程序模板中不再存在插座。您可以使用partial或从嵌套模板中提取{{outlet}}

部分示例:http://jsbin.com/qilem/2#/bar

示例渲染:http://jsbin.com/qilem/3#/bar