2014-02-08 3 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.

Смежные вопросы