El problema con el que me encuentro puede ser tangencial, pero dado que googlear me trajo a esta pregunta, esto podría ser apropiado. El problema me asombra cuando uso el UI Router, pero solo cuando intento actualizar la página con el botón de actualización del navegador. La aplicación usa UI Router con un estado abstracto principal, y luego el secundario declara fuera del principal. En la run()función de la aplicación , hay un $state.go('...child-state...')comando. El estado primario usa a resolve, y al principio pensé que quizás un controlador secundario se está ejecutando dos veces.
Todo está bien antes de que la URL haya agregado el hash.
www.someoldwebaddress.org
Luego, una vez que la URL ha sido modificada por UI Router,
www.someoldwebaddress.org#/childstate
... y luego cuando actualizo la página con el botón de actualización del navegador , se $stateChangeStartactiva dos veces y cada vez apunta a childstate.
El resolveestado primario es el que se dispara dos veces.
Quizás esto sea un error; independientemente, esto parece eliminar el problema para mí: en el área de código donde $stateProviderse invoca por primera vez , primero verifique si window.location.hash es una cadena vacía. Si es así, todo está bien; si no es así, configure window.location.hash en una cadena vacía. Entonces parece que el $stateúnico intenta ir a algún lado una vez en lugar de dos.
Además, si no desea confiar en el valor predeterminado de la aplicación runy state.go(...), puede intentar capturar el valor hash y usar el valor hash para determinar el estado secundario en el que se encontraba justo antes de actualizar la página, y agregar una condición al área en su código donde configuró el state.go(...).
ng-appy con arranque manual). Compruebe también si ha conectado su controlador a múltiples elementos (con ng-controller).