2014-02-08 46 views
1

我覺得這是最好的例子來說明: http://jsfiddle.net/NQKvy/666/子視圖打破父

當你點擊foo一切如預期,點擊bar然後回去foo。控制檯中出現connectOutlet異常。我想要實現的是兒童路線(酒吧)超過家長被吸引的地方。

我知道很多人會說,「嗯,爲什麼不把它作爲一個單獨的路線,只是修改路徑的路徑屬性」,這不是一個選項,因爲我取決於父母模型和控制器在那裏。

App = Ember.Application.create({}); 

App.Router.map(function() { 
    this.resource('foo', function() { 
     this.route('bar'); 
    }); 
}); 

App.IndexRoute = Ember.Route.extend({ 
    redirect: function() { this.transitionTo('foo');} 
}); 

App.FooRoute = Ember.Route.extend({ 
}); 

App.FooBarRoute = Ember.Route.extend({ 
    templateName: 'foo/bar', 
    renderTemplate: function() { 

     /***** THE OFFENDING CODE ******/ 
     this.render(this.templateName, { 
      into: 'application', 
      outlet: 'main' 
     }); 
    } 
}); 

回答

2

我相信問題是foo路線是foo/bar路線(foo/bar將被默認渲染爲foo,因爲它們是嵌套)的一部分。您可以使用foo/index路由,如果您指定了子路由,或者另外設置了另一個子路由,該路由會自動存在。

看一看this JSFiddle