Here's a JSBin展示了我遇到的问题。 This is the code为此。
我遇到过这种情况,如果我在加载应用程序后导航到Ember.js中的路线(例如使用transitionTo
),一切正常。但是,如果我尝试直接导航到路线(通过输入网址或在我已经在路线上后刷新页面),它就无法正确渲染。
我使用renderTemplate
将模板放入父路线。但是直接访问路径时尚未呈现父路由,因此它在控制台中出现以下错误时失败:
Cannot read property 'connectOutlet' of undefined
如何确保父路线的模板到位以避免此错误?
答案 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}}
。