stateparams angularjs angular-ui-router

angularjs - stateparams - Cómo no cambiar la URL cuando se muestra la página de error 404 con ui-router



ui view ui router (2)

A partir de ui-router#0.2.15 puede usar $state.go() y enviar la opción de no actualizar la ubicación:

$urlRouterProvider.otherwise(function($injector) { var $state = $injector.get(''$state''); $state.go(''404'', null, { location: false }); });

Quiero mostrar la página de error 404, pero también quiero guardar la URL incorrecta en la ubicación.

Si voy a hacer algo así:

$urlRouterProvider.otherwise(''404''); $stateProvider .state(''404'', { url: ''/404'', template: error404Template });

url cambiará a /404 . ¿Cómo puedo mostrar un mensaje de error en las URL incorrectas sin cambiar la URL real?


Hay solución para este escenario. Usaríamos 1) una característica nativa de ui-router y 2) un ajuste de configuración. Un ejemplo de trabajo se puede observar aquí .

1) Una característica nativa de las definiciones de estado de ui-router es:

La url no es necesaria. El estado podría definirse sin su representación en el lugar.

2) Un ajuste de configuración es:

ruta cadena Función La ruta url a la que desea redireccionar o una regla de función que devuelve la ruta url. La versión de la función se pasa dos parámetros: $ inyector y $ ubicación

Solución: combinación de estos dos. Tendríamos state sin url y costumbre de lo otherwise :

$stateProvider .state(''404'', { // no url defined template: ''<div>error</div>'', }) $urlRouterProvider.otherwise(function($injector, $location){ var state = $injector.get(''$state''); state.go(''404''); return $location.path(); });

Compruebe que todo en este ejemplo de trabajo