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 $stateChangeStart
activa dos veces y cada vez apunta a childstate
.
El resolve
estado 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 $stateProvider
se 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 run
y 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-app
y con arranque manual). Compruebe también si ha conectado su controlador a múltiples elementos (con ng-controller).