O problema que estou encontrando pode ser tangencial, mas como o Google me levou a essa pergunta, isso pode ser apropriado. O problema é horrível para mim ao usar o roteador da interface do usuário, mas apenas quando tento atualizar a página com o botão de atualização do navegador. O aplicativo usa o roteador da interface do usuário com um estado abstrato pai e os estados filho fora do pai. Na run()função do aplicativo , há um $state.go('...child-state...')comando. O estado pai usa a resolvee, a princípio, pensei que talvez um controlador filho esteja executando duas vezes.
Tudo está bem antes que o URL tenha o hash anexado.
www.someoldwebaddress.org
Depois que o URL for modificado pelo roteador da interface do usuário,
www.someoldwebaddress.org#/childstate
... e, em seguida, quando atualizo a página com o botão de atualização do navegador , o $stateChangeStartacionador é acionado duas vezes e cada vez aponta para o childstate.
O resolveestado pai é o que está disparando duas vezes.
Talvez isso seja uma farsa; de qualquer maneira, isso parece eliminar o problema para mim: na área do código onde $stateProvideré chamado pela primeira vez , verifique primeiro se o window.location.hash é uma string vazia. Se for, tudo é bom; caso contrário, defina o window.location.hash para uma sequência vazia. Então parece que as $stateúnicas tentativas de ir a algum lugar uma vez e não duas.
Além disso, se você não deseja confiar no padrão do aplicativo rune state.go(...), pode tentar capturar o valor do hash e usá-lo para determinar o estado filho em que estava antes da atualização da página e adicionar uma condição à área em seu código onde você define o state.go(...).
ng-appe com autoinicialização). Verifique também se você conectou seu controlador a vários elementos (com ng-controller).