Проблема, с которой я сталкиваюсь, может быть косвенной, но поскольку поиск в Google привел меня к этому вопросу, это может быть уместно. При использовании UI Router у меня возникает проблема, но только когда я пытаюсь обновить страницу кнопкой обновления браузера. Приложение использует UI Router с родительским абстрактным состоянием, а затем дочерние состояния от родительского. В run()функции приложения есть $state.go('...child-state...')команда. Родительское состояние использует a resolve, и сначала я подумал, что, возможно, дочерний контроллер выполняется дважды.
Все хорошо, пока к URL не добавлен хеш.
www.someoldwebaddress.org
Затем, как только URL был изменен UI Router,
www.someoldwebaddress.org#/childstate
... а затем, когда я обновляю страницу с помощью кнопки обновления браузера , $stateChangeStartогонь срабатывает дважды, и каждый раз указывает на childstate.
На resolveродительском состоянии запускается дважды.
Возможно, это клудж; несмотря на это, это, кажется, устраняет проблему для меня: в области кода, где $stateProviderвызывается впервые, сначала проверьте, является ли window.location.hash пустой строкой. Если это так, все хорошо; если это не так, установите для window.location.hash пустую строку. Тогда кажется, что $stateединственная попытка пойти куда-то один раз, а не дважды.
Кроме того , если вы не хотите , чтобы полагаться на дефолтом приложения runи state.go(...)вы можете попытаться захватить значение хеш - функции и использовать хэш - значение для определения состояния ребенка вы были непосредственно перед обновлением страницы и добавить условие к области в вашем код, где вы установите state.go(...).
ng-appпомощью ручной загрузки). Также проверьте, подключен ли ваш контроллер к нескольким элементам (с помощью ng-controller).