2015-06-10 4 views
0

У меня есть строка маршрута, такая как var global_book_route = /books/:id, указанная в переменной.Создать Угловой Динамический Маршрут

Я хочу, чтобы иметь возможность использовать $ route или $ location для глубокой ссылки на этот маршрут в контроллере, есть ли способ сделать это без повторного указания префикса url?

Это будет работать: var id=1; $location.path('books/'+id') -> '/ книги/1'

Однако это не так: $location.path(global_book_route).search({id:1}) -> 'книги /: ИД ИД = 1'

Есть ли способ, я могу использовать маршрут, указанный в строке, чтобы перейти в нужное место?

+0

Я думаю, что я немного нечеткий на конечной цели здесь. Почему не '$ location.path ('books /' + id)' адекватно? Использование переменных в маршрутах для доступа к ним в запросе (часть, которая происходит после '$ location') – azium

+0

@azium со сложными URL-адресами, больно воссоздать и обработать логику маршрута с помощью добавления строк. Используя надуманный пример, «users /: userId/accounts /: accountId» - '$ location.path ('users /' + user.id + '/ accounts /' + account.id)' - что, если маршрут учетной записи изменится на 'users /: userId /: accountId'? – tmarthal

+1

Когда вы имеете в виду «логику маршрута», вы говорите строку, которая представляет URL-адрес? Если основной маршрут изменится, вы почти ничего не можете сделать, но убедитесь, что вы изменили свой URL. Это похоже на то, что google maps api изменяется с '/ _api/v2 /' на '/ _api/v3 /', вам нужно изменить свой код, чтобы это отразить. – azium

ответ

1

Я думаю, что вы смешиваете сам маршрут (/ books /: id) с представлением маршрута в своем коде.

Например, ваш global_book_route должен быть только «/ books /».

Затем, если вы хотите загрузить конкретную книгу, вы можете пойти расположение global_book_route + book_id тех пор, пока маршрут объявлен в коде, как:

$routeProvider 
    .when('/Book/:bookId', { 
    templateUrl: 'book.html', 
    controller: 'BookController', 
    resolve: {   
    } 
    }) 

на стороне узла, когда это имея дело с маршрутами в Angular, действительно стоит посмотреть на угловое, ui-router предлагает путь лучшей системы для управления вашими маршрутами и состояниями.

+0

Правильно, так как бы вы глубоко ссылку на этот маршрут без повторного указания префикса «Книга /»? На самом деле это мой вопрос. Как бы вы указали этот маршрут в контроллере или в представлении? Я полагаю, что текущая практика - это то, о чем я упомянул, просто введите строку маршрута, повторно указанную в контроллерах без routeParams (например, «Book /» + id) – tmarthal

+0

Вы можете использовать что-то вроде глобальной константы, если хотите сделать рефакторинг кода проще в долгосрочной перспективе. http://plnkr.co/edit/VIO46fn8ZaEaTsC3OBnu?p=preview – Jeremy

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