AngularJS regex route pour une url similaire à la charge de contrôleur et la vue
J'ai un parcours similaire, qui devrait se charger d'un point de vue différent et contrôleur en fonction de si oui ou non le paramètre est un nombre. Exemple:
/artists/2
devraitArtistsIndexController
avec une vue/www/artists/index.html
/artists/name
devraitArtistsProfileController
avec une vue/www/artists/profile.html
Idéalement, j'aimerais utiliser quelque chose comme:
$routeProvider.when("/artists/:page", {
templateUrl: "/www/artists/index.html",
controller: "ArtistsIndexController"
});
$routeProvider.when("/artists/:name", {
templateUrl: "/www/artists/profile.html",
controller: "ArtistsProfileController"
});
Où :page
est un nombre et :name
ne l'est pas.
Remarque je voir une github problème (trouvé de cette question) mais je me demande si il existe une solution ou solution à privilégier.
OriginalL'auteur Gloopy | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
Une autre méthode consiste à utiliser le l'interface utilisateur du routeur qui prend en charge les expressions régulières pour les routes (parmi une foule d'autres choses) qui permettrait de:
lorsque j'ai utilisé l'interface utilisateur du routeur j'ai toujours eu un itinéraire pour chaque état, de sorte que j'ai juste pensé que des états comme l'un itinéraire. Le docs mention que chaque etat a besoin d'une route, mais je ne serais pas s'inquiéter à ce sujet au premier abord. Vous pouvez regarder les ceci pour plus de détails sur le concept générique d'une machine d'état.
OriginalL'auteur Gloopy
- Je utiliser un vilain hack, qui consistent à modifier la regexp
C'est laid, mais il fonctionne très bien.
Vous pouvez modifier vos itinéraires les expressions régulières pour les faire correspondre ce que vous voulez.
OriginalL'auteur pykiss
Je suis en utilisant cela comme une solution pour l'instant et s'intéresse à des solutions de rechange!
1) Créer un modèle générique qui sera en charge d'un contrôleur et d'afficher de manière dynamique:
Dans cet exemple, j'ai placé ce point de vue dans
/www/shared/dynamic-controller.html
2) Créer un contrôleur qui vérifie le paramètre de route pour déterminer le contrôleur et la vue de charge:
3) Utiliser une route quel que soit le type de paramètre:
OriginalL'auteur Gloopy