Puis-je définir une route avec des paramètres facultatifs (même modèle et contrôleur, mais certains paramètres doivent être ignorés s'ils n'existent pas?
Alors au lieu d'écrire les deux règles suivantes, n'en ayez qu'une?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Quelque chose comme ça ([ce paramètre est facultatif])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Je n'ai rien trouvé dans leur documentation.
angularjs
angularjs-routing
Alexandru R
la source
la source
[]
) dans la version 1.1.5.[]
. Voir ce commit: github.com/angular/angular.js/commit/…Réponses:
Il semble qu'Angular ait le support pour cela maintenant.
À partir de la dernière documentation (v1.2.0) pour
$routeProvider.when(path, route)
:path
peut contenir des groupes nommés facultatifs avec un point d'interrogation (:name?
)la source
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
il ne correspondra pas si l'URL n'a pas de barre oblique à la fin. Donc/claims/documents/1234/
correspond, mais/claims/documents/1234
ne le fait pas.Comme la mention @ g-eorge, vous pouvez le faire comme ceci:
Vous pouvez également créer autant que vous avez besoin de paramètres optionnels.
la source
Veuillez voir la réponse @jlareau ici: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Vous pouvez utiliser une fonction pour générer la chaîne de modèle:
la source
En fait, je pense que OZ_ peut être quelque peu correct.
Si vous avez la route
'/users/:userId'
et naviguez vers'/users/'
(notez le /),$routeParams
votre contrôleur doit contenir un objet contenantuserId: ""
dans 1.1.5. Donc non, le paramètreuserId
n'est pas complètement ignoré, mais je pense que c'est le meilleur que vous obtiendrez.la source