Ответ 1
Текущий трюк:
$state.go($ state.current.name, $state.params, {reload: true});
У меня есть приложение AngularJS, начинающееся с index.html и использующее ui-router. На основе триггера я хочу перезагрузить полную страницу. Я пробовал:
$state.go($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
Но это не работает. Он не перезагружает мой начальный index.html.
Я могу сделать:
window.location.href = "index.html";
Но тогда я нахожусь на своей начальной странице, а не в текущем состоянии.
Должен ли набор window.location.href
to index.html
с параметрами строки запроса, определяющими текущее местоположение? Если я это сделаю, как я могу перейти к этому местоположению?
Текущий трюк:
$state.go($ state.current.name, $state.params, {reload: true});
Кажется, что все игнорировали то, что, по-видимому, спрашивает Серж ван ден Овер, и что он хочет, чтобы целая страница перезагружалась, а не только маршрут.
Решение для этого довольно просто, если вы введете службу $window
в свой контроллер:
$window.location.reload();
Если вы просто хотите, чтобы маршрут перезагружался (что кажется гораздо более распространенным) и использует ui-router
, просто введите команду $state
и выполните:
$state.reload();
Это должно было повторно инициализировать контроллеры теперь, когда ошибка была исправлена, хотя я не думаю, что она повторно инициализирует resolve
s.
Это сработало для меня по аналогичному сценарию.
$state.go('root.state').then(function(){
$state.reload();
});
Если вы включили службу $route в свой контроллер, вы можете попробовать $route.reload();
Попробуйте следующее:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});