2013-11-14 2 views
4

У меня есть следующие настройки маршрутизации:Ember Routing: Повторное использование ресурса под несколькими родительскими путями

this.resource('blog',function(){ 
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){}); 
}); 

this.resource('post',{path:":post_id"},function(){ 
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){}); 
}); 

То, что я ожидал бы это, при переходе к blog.selectimage и post.selectimage, что тот же маршрутизатор, контроллер и представление. К сожалению, кажется, что побеждает последняя запись.

Возможно ли достичь этого, не выходя из родительского контекста (post/blog), при навигации по выбору изображения (Очевидно, что я мог бы наследовать классы base-selectimages, но я надеюсь, что есть какой-то общий ember способ сделать это.)

ответ

5

Вы не можете иметь имя ресурса для двух разных маршрутов, поскольку Ember больше полагается на соглашения об именах. Но Эмбер обеспечивает способы повторного использования и тот же контроллер и шаблоны

Переименуйте selectimage по почте что-то еще

this.resource('post',{path:":post_id"},function(){ 
    this.resource('xxx',{path:"xxx/:returncontext"}); 
}); 

И в маршрутизаторе, вы можете указать templateName и controller, который должен быть использован повторно. Что-то, как это должно сделать его многоразовым

App.xxxRoute = Em.Route.extend({ 
    controllerName: 'selectimage', 
    templateName: 'selectimage' 
}); 

Образец Demo

+0

Ницца. Я не знал, что вы можете указать контроллер и шаблон, подобные этому в Маршруте. – AyKarsi

+0

.. только что проверил документы @ http://emberjs.com/api/classes/Ember.Route.html: имя_контроллера и имя шаблона не упоминаются. Заглянув в метод рендеринга в исходном коде, я вижу, что вы также можете указать имя_отображения. – AyKarsi

+0

Счастлив, что помогло вам :) Ember Docs становится все лучше и лучше. Поверьте, это будет в лучшем случае раньше – selvagsz

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