template stateprovider start example controlleras change angularjs angular-ui-router

angularjs - stateprovider - ui-router params



Evite un cambio de estado con el enrutador ui angular sin usar $ rootScope (3)

(1) De acuerdo con los docs bajo los eventos de cambio de estado

$rootScope.$on(''$stateChangeStart'', function(event, toState, toParams, fromState, fromParams){ event.preventDefault(); // transitionTo() promise will be rejected with // a ''transition prevented'' error })

Podría cambiar $ rootScope a $ scope siempre que sea apropiado y funcione.

En Adjuntar datos personalizados a objetos de estado , puede pasar datos personalizados.

(2) No estoy seguro de lo que está preguntando, pero las fábricas / servicios / proveedores realmente ayudarían.

Mi usuario puede dejar un estado, pero antes de que aparezca el cuadro de diálogo modal "¿Desea guardar?"

SOLO si los datos del usuario están sucios, eso significa que han cambiado.

Lo que NO quiero es pegar una propiedad isDirty en mi EditController al $ rootScope, ir al evento stateChangeStart y verificar allí isDirty y luego mostrar / no el diálogo de guardar.

Evitar variables globales dice que todos los libros principiantes de javascript ...

1.) ¿Cuál es la manera pro para prevenir un cambio de estado sin hackear el $ rootscope?

2.) ¿Existen bibliotecas auxiliares para ui-router que mejoren la función de oferta de ui-router dentro del controlador para encapsular la lógica ui?


Aunque en el momento de escribir esto no forma parte de la versión estable, la versión 1.0 del enrutador UI usará el valor de retorno de onEnter / onExit para evitar la navegación.

Ver el número 2219 de GitHub.