AngularJS одна страница с несколькими состояниями

0

Я разрабатываю приложение angularjs с использованием углового ui-router. Существует страница, в которой перечислены элементы, которые можно фильтровать по имени, и она отображается в URL-адресе, например /items? Name = foo. Существует другая страница, например, пользователи, откуда вы можете перейти на страницу элементов, и те, которые фильтруются пользователем, например /items? Userid = bar.

Я делаю это, имея два состояния для одной и той же страницы в конфигурации маршрутизатора:

.state('index.items', {
   url: '/items?:name',
   controller: 'ItemCtrl as ctrl',
   templateUrl: 'item/index.html',
   brParent: 'index.home'
})
.state('index.itemsOfUser', {
   url: '/items?:userid&:name',
   controller: 'ItemCtrl as ctrl',
   templateUrl: 'item/index.html',
   brParent: 'index.home'
})

Я делаю это так, чтобы щелкнуть по странице элементов на панели навигации, идет на обычную страницу элементов, которую пользователь не фильтровал.

Но когда вы переходите на страницу элементов с пользователей, идентификатор пользователя появляется в URL-адресе, но в $ stateparams userid не определен, и я не понимаю, почему.

Я не знаю, подходит ли мой подход, я новичок в угловой.

  • 0
    Вы смотрели на state.reloadOnSearch ? ... кстати, это не самый лучший способ использовать одно и то же состояние среди разных сущностей приложения, вы не должны объявлять много состояний с одинаковыми URL-адресами ...
  • 0
    Ну, я также (пытался) спросить, является ли это хорошим способом объявить более одного состояния для одной и той же страницы или с тем же URL-адресом, или я должен искать / найти другое решение. Спасибо!
Теги:
angular-ui-router

1 ответ

2

ui-router позволяет извлекать параметры строки запроса. Ваш код почти прав, просто небольшое синтаксическое исправление:

.state('index.items', {
   url: '/items?name', // Remove semicolon
   controller: 'ItemCtrl as ctrl',
   templateUrl: 'item/index.html',
   brParent: 'index.home'
})
.state('index.itemsOfUser', {
   url: '/items?userid&name', // Remove semicolons
   controller: 'ItemCtrl as ctrl',
   templateUrl: 'item/index.html',
   brParent: 'index.home'
})

Как указано в документах: https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters

  • 0
    Ну, как и прежде, с двоеточиями. Может проблема не с маршрутизацией? Если все остальное правильно, это не должно создавать никаких проблем?
  • 0
    Вы можете загрузить код контроллера? давайте посмотрим использование $stateparams
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню