Я использую Angular UI Router и хотел бы перезагрузить текущее состояние и обновить все данные / перезапустить контроллеры для текущего состояния и его родителя.
У меня есть 3 уровня государства: directory.organisations.details
directory.organisations содержит таблицу со списком организаций. Нажатие на элемент в таблице загружает directory.organisations.details с $ StateParams, передающим идентификатор элемента. Поэтому в состоянии детали я загружаю детали для этого элемента, редактирую их и затем сохраняю данные. Пока все хорошо.
Теперь мне нужно перезагрузить это состояние и обновить все данные.
Я пытался:
$state.transitionTo('directory.organisations');
Который переходит в родительское состояние, но не перезагружает контроллер, я думаю, потому что путь не изменился. В идеале я просто хочу остаться в состоянии directory.organisations.details и обновить все данные в родительском тоже.
Я также попробовал:
$state.reload()
Я видел это в API WIKI для $ state.reload "(ошибка с переустановкой контроллеров прямо сейчас, исправление в ближайшее время)".
Любая помощь будет оценена?
источник
$state.transitionTo($state.current, $stateParams, {reload:true, inherit:false})
быть добавлен код ? При такой же проблеме с перезагрузкой моих состояний теряются все данные.Ответы:
Я обнаружил, что это самый короткий рабочий способ обновления с помощью ui-router:
Обновление для более новых версий:
Какой псевдоним для:
Документация: https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload
источник
ui-router
я думаю , что нет никакого способа для этого. Естьwindow.location.reload(true)
.$window.location.reload();
. Хотя это кажется немного излишним, это может сделать тестирование / моделирование / знание всех зависимостей частью кода более простым делом.Это решение работает в AngularJS V.1.2.2:
источник
resolve
пункты государства?Это было бы окончательное решение. (вдохновленный постом @ Hollan_Risley)
Теперь, когда вам нужно перезагрузить, просто позвоните:
источник
для ионного каркаса
https://github.com/angular-ui/ui-router/issues/582
источник
$state.go
не удалось перенаправить на новое состояние. Спасибо @RouR. Спас мой день.$state
? Я бегу ионный 1.4.0, угловой 1.5.3Вероятно, более чистый подход будет следующим:
Мы можем перезагрузить состояние только из HTML.
источник
Ответ @Holland Risley теперь доступен в виде API в последнем UI-роутере.
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state
источник
источник
источник
если вы хотите перезагрузить всю страницу, как кажется, просто введите $ window в ваш контроллер и затем вызовите
но если вы хотите только перезагрузить текущее представление, введите $ scope, $ state и $ stateParams (последнее на тот случай, если вам нужно изменить некоторые параметры в предстоящей перезагрузке, например, номер вашей страницы), тогда вызовите это в любом метод контроллера:
AngularJS v1.3.15 angular-ui-router v0.2.15
источник
Глупый обходной путь, который всегда работает.
источник
Для угловых v1.2.26, ни один из вышеперечисленных не работает. Щелчок ng, который вызывает вышеупомянутые методы, должен будет щелкнуть дважды , чтобы перезагрузить состояние.
Так что я в итоге эмулировал 2 клика, используя $ timeout.
источник
Все не удалось для меня. Единственное, что сработало ... это добавление cache-view = "false" в представление, которое я хочу перезагрузить при переходе к нему.
из этого выпуска https://github.com/angular-ui/ui-router/issues/582
источник
Не уверен, почему ни один из них, казалось, не работал для меня; тот, который наконец сделал это, был:
Это было с Angular 1.4.0
источник
У меня было несколько вложенных представлений, и целью было перезагрузить только одно содержимое. Я пробовал разные подходы, но единственное, что сработало для меня, это:
В этом случае только необходимое представление будет перезагружено, и кэширование все еще будет работать.
источник
Я знаю, что было множество ответов, но лучший способ сделать это, не вызывая полного обновления страницы, - создать фиктивный параметр на маршруте, который я хочу обновить, и затем, когда я вызываю маршрут, я прохожу в случайное число для фиктивного параметра.
а затем звонок на этот маршрут
Работает как шарм и обрабатывает решает.
источник
Вы можете использовать ответ @Rohan https://stackoverflow.com/a/23609343/3297761
Но если вы хотите настроить каждый контроллер после изменения представления, вы можете использовать
источник
Если вы используете ionic v1, вышеуказанное решение не будет работать, так как ionic включил кэширование шаблонов как часть $ ionicConfigProvider.
Обойти это немного нелепо - вы должны установить кэш на 0 в файле ionic.angular.js:
источник
У меня была эта проблема, это разрушало мою голову, моя маршрутизация читалась из файла JSON и затем передавалась в директиву. Я мог бы щелкнуть на пользовательском интерфейсе, но не смог перезагрузить страницу. Так что мой коллега показал мне хороший трюк для этого.
Это сработало для меня.
Надеюсь, поможет
источник