угловой ui-маршрутизатор: как перезагрузить состояние при изменении параметра пути, но не перезагрузить при изменении параметра запроса?
например, я хочу, чтобы это изменение в навигации, чтобы обновить состояние:
#/detail/1
#/detail/2
но я не хочу, чтобы эта навигация перезагружала состояние:
#/detail/1?search=blah
#/detail/1?search=huzzah
согласно документации ui-router, настройка reloadOnSearch: false
должен выполнить это, но попробуйте Планк ниже. Когда reloadOnSearch === false
, изменение параметра path не перезагружает состояние, хотя в документации говорится, что должно.
2 ответов
я создал plunker, показав, что ui-router
характеристика reloadOnSearch
работает, как описано здесь:
reloadOnSearch:
Boolean (по умолчанию true). Если false не будет retrigger то же самое состояние просто так поиск/запрос с параметрами изменилось. Полезно, когда вы хотите изменить $ location.search () без запуска перезагрузить.
Итак, что это говорит, что если у нас есть государство, как это
.state('index.detail', {
url: '/detail/:id',
reloadOnSearch : false,
...
})
переход к
-
ui-sref="index.detail({id:1})"
загрузит это состояние при навигации в
-
ui-sref="index.detail({id:any-other-id})"
ничего не будет делать. Но! Если бы мы ввели новый (напр. брат) состояние определяется следующим образом:
.state('index.other', {
url: '/other/:id',
reloadOnSearch : false,
...
})
переход к последовательности ниже всегда будет перезагрузка состояния перезагрузки,не потому, что изменение param, а потому, что изменение состояния
<a href="#/index/detail/1" ...
<a href="#/index/other/1" ... // will relaod
<a href="#/index/detail/2" ... // because the state
<a href="#/index/other/2" ... // is changing
смотрите, что все в действии здесь...
Это ошибка в UI-маршрутизаторе, которая была исправлена в выпуске 0.2.15:
https://github.com/angular-ui/ui-router/releases
обновление до последней исправит проблему