valor tiene sirve significa saber quitar que propiedades para obtener modificar elemento con atributo javascript angularjs angular-ui-router url-routing

javascript - tiene - De lo contrario, para estados con parámetros escritos



quitar propiedades jquery (1)

Empecé a usar parámetros escritos (como {id:int} ) en la configuración de mi ruta. Si un estado no coincide debido al tipo , de lo otherwise no parece activarse.

Por ejemplo:

$stateProvider .state(''stuff'', { url: ''/version/{version:int}/stuff'', templateUrl: // ..., controller: // ... }) .state(''list'', { url: ''/list'', // ... }); $urlRouterProvider.otherwise(''/list'');

Si la versión es "x" (no una int), no se me redirige a la página de la lista. En cambio, termino en una página vacía sin errores en la consola.

¿Cómo puedo arreglar esto?

(Aclaración: estoy escribiendo direcciones URL no válidas en la barra de direcciones para probar esto, no usando ui-sref ).

Actualización: creo que he encontrado lo que está causando (gracias a @ RadimKöhler por un ejemplo que eliminó algunas posibilidades). Ver mi plunk

Todo funciona bien, excepto las URL que no coinciden con un tipo personalizado creado con $urlMatcherFactoryProvider.type() . Utilicé un tipo de guid basado en las respuestas a esta pregunta .

Puedo solucionar esto utilizando expresiones regulares en la URL, pero sería bueno tener una solución.

Más información: al agregar un pattern al objeto Tipo personalizado, se arregla esto. El patrón tiene que omitir los anclajes ( ^$ ), por lo que algo así como:

pattern: /[a-f/d]{8}-(?:[a-f/d]{4}-){3}[a-f/d]{12}/i


Yo diría que el concepto como querías está funcionando. Hay un ejemplo de trabajo

este estado def (1: 1 a pregunta)

$stateProvider .state(''stuff'', { url: ''/version/{version:int}/stuff'', templateUrl: ''tpl.html'', controller: ''StuffCtrl'', }) .state(''list'', { url: ''/list'', templateUrl: ''tpl.html'', controller: ''ListCtrl'', }); $urlRouterProvider.otherwise(''/list'');

manejará adecuadamente estos enlaces:

// list <a href="#/list"> // ui-sref <a ui-sref="stuff({version:1})"> <a ui-sref="stuff({version:2})"> // href <a href="#/version/12/stuff">

estos no funcionarán (como se esperaba) - por lo que no crearán ningún href (tal estado con tales params no existe)

<a ui-sref="stuff({version:''A''})"> <a ui-sref="stuff({version:''xyz''})">

estos href serán redirigidos a lo contrario

<a href="#/version/x/stuff"> <a href="#/version/AB/stuff">

Verifíquelo en acción aquí