2014-09-05 5 views
0

Я хотел бы вложить ресурсы в Ember, но иметь доступ к ним с коротким URL-адресом.Вложенные ресурсы и путь

Например: mysite.com/admin откроет маршрут:/маршруты/профили/настройки/админ

Можно ли сделать что-то подобное с помощью Эмбер? В настоящее время я использую Ember 1.7 с Ember App Kit.

Я попытался следующие, но это не работает:

var Router = Ember.Router.extend(); 

Router.map(function() { 
this.resource('profile', function() { 
    this.resource('profile.settings', { path: '/settings' }, function() { 
     this.resource('profile.settings.admin', { path: '/admin' }); 
    ); 
}); 

Спасибо.

+0

Если вы в гнезде, вам не нужно повторять родительское имя маршрута. Ваш вложенный ресурс 'profile.settings' должен быть просто' settings', то же самое для 'profile.settings.admin', должен быть просто' admin'. – MilkyWayJoe

+1

@MilkyWayJoe Нет, если он хочет, чтобы имена маршрутов были префиксом. Ему либо нужно вложить 'this.route()' вызовы, либо он должен сам добавить префикс. И желательно иметь префиксы, поэтому имена конфликтов не отображаются с большим количеством маршрутов. – GJK

ответ

2

Ваш код не работает, потому что ваш внутренний ресурс наследует путь /profile от внешнего ресурса и /settings от среднего ресурса. Если вы хотите, чтобы это было просто /admin, вы должны сделать что-то вроде этого:

this.resource('profile', { path: '' }, function() { 
    this.resource('profile.settings', { path: '' }, function() { 
     this.resource('profile.settings.admin', { path: '/admin' }); 
    }); 
}); 

Однако, это собирается получить довольно волосатым, когда у вас есть несколько маршрутов, что каждые хотят путь верхнего уровня. Вам может быть проще просто объявить маршрут admin на верхнем уровне, а затем перенаправить с помощью крюка redirect на маршруте.

+0

Это работает, когда у вас есть только один ресурс на корневом уровне с пустым путем. Если у вас более одного, это не работает должным образом. – alexmngn

+0

Вот почему я упомянул, что вам, вероятно, будет лучше просто перенаправлять с маршрута верхнего уровня. Это гораздо более явное, чем это. – GJK

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