UI-Router angulaire plus de paramètres facultatifs dans un état
Comment puis-je permettre à des paramètres facultatifs à mes itinéraires sans l'aide d'une chaîne de requête, et en utilisant uniquement un nom de route? Je suis actuellement en spécifiant chaque itinéraire CINQ FOIS de permettre à toute combinaison de pièces:
Toutes les parties doivent être en option. Itinéraire doit résoudre toute variation.
.state("login", { url: "/login", templateUrl: "login.html", params: { a: null, b: null, c: null, d: null } })
.state("loginA", { url: "/login/:a", templateUrl: "login.html", params: { b: null, c: null, d: null } })
.state("loginAB", { url: "/login/:a/:b", templateUrl: "login.html", params: { c: null, d: null } })
.state("loginABC", { url: "/login/:a/:b/:c", templateUrl: "login.html", params: { d: null } })
.state("loginABCD", { url: "/login/:a/:b/:c/:d", templateUrl: "login.html" })
Il DOIT être plus facile /propre /moyen de faire moins moche.
source d'informationauteur G. Deward
Vous devez vous connecter pour publier un commentaire.
À court de réponse....
Il est un travail plunker
Solution pourrait être de deux types. La première est vraiment très dynamique. La seconde est de travailler en tant que de besoin, un peu plus rigide, mais bénéficiant de
UI-Router
fonctionnalités.I. approche Dynamique
Observons la première, ce qui est intéressant (mais peut-être trop compliqué dans notre scénario). Il est très similaire à ce Q & Un
Récursive de l'interface utilisateur du routeur vues imbriquées
Nous essayons de résoudre le url qui contient quantité inconnue de dossiers(répertoires)* les noms:
État peut se définir comme ceci:
Et qui va conduire à un param
folderPath
complète (avec le chemin d'accès au dossier.Dans le cas où nous voudrions résoudre notre scénario (poignée exactement trois params) nous pourrions étendre des trucs comme ça
Contrôleur pour la gestion des Fichiers:
Définition de l'état à l'aide de résolution:
II. L'INTERFACE utilisateur du Routeur fonctionnalité intégrée
params : {}
Le deuxième scénario, est en fait très simple. Il utilise
UI-Router
construit en fonction:params : {}
. Vérifier sa documentation ici:http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider
Ce serait notre définition de l'état:
Et tous ces liens fonctionneront ainsi:
Et ce qui était le truc:
Vérifier dans l'action ici
Une autre façon simple de le faire est de définir une valeur par défaut pour le paramètre, comme ceci:
Selon l'angle de L'INTERFACE utilisateur du Routeur docsla définition d'une valeur par défaut automatiquement le paramètre facultatif.
Vous pouvez passer des paramètres facultatifs à l'aide de ui-sref. Vous pouvez ensuite accéder à votre contrôleur à l'aide de l' $stateParams service. Les paramètres qui ne sont pas passés voudrais juste rester null.