呈现给应用程序的子视图打破父

时间:2014-02-08 08:06:06

标签: ember.js

我认为最好用一个例子来解释: 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'
      });
  }
});

1 个答案:

答案 0 :(得分:2)

我认为问题是foo路由是foo/bar路由的一部分(foo/bar默认会呈现为foo,因为它们是嵌套的)。您可以使用foo/index路由,如果您指定子路由,则会自动存在,或者替代设置另一个子路由。

查看this JSFiddle