¿Puedo establecer una ruta con parámetros opcionales (misma plantilla y controlador, pero algunos parámetros deben ignorarse si no existen?
Entonces, en lugar de escribir las siguientes dos reglas, ¿tiene solo una?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Algo como esto ([este parámetro es opcional])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
No pude encontrar nada en su documentación.
angularjs
angularjs-routing
Alexandru R
fuente
fuente
[]
) en la versión 1.1.5.[]
. Vea este compromiso: github.com/angular/angular.js/commit/…Respuestas:
Parece que Angular tiene soporte para esto ahora.
De los últimos documentos (v1.2.0) para
$routeProvider.when(path, route)
:path
puede contener grupos con nombre opcionales con un signo de interrogación (:name?
)fuente
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
no coincidirá si la url no tiene una barra inclinada final. Entonces/claims/documents/1234/
coincide, pero/claims/documents/1234
no lo hace.Como menciona @ g-eorge, puedes hacerlo así:
También puede hacer tanto como necesite parámetros opcionales.
fuente
Consulte la respuesta de @jlareau aquí: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Puede usar una función para generar la cadena de plantilla:
fuente
En realidad, creo que OZ_ puede ser algo correcto.
Si tiene la ruta
'/users/:userId'
y navega hacia'/users/'
(tenga en cuenta el seguimiento /),$routeParams
en su controlador debe haber un objeto que contengauserId: ""
en 1.1.5. Así que no, el paramateruserId
no se ignora por completo, pero creo que es lo mejor que obtendrás.fuente