ui-router modèle dynamique chemin
Je suis à l'aide de l'interface utilisateur du routeur 0.2.8. Je suis désireux de charger un modèle basé sur la largeur de l'appareil. Je peux obtenir la largeur de l'appareil sans problème, définissez dans le champ d'application, etc, mais je peux comprendre comment le lier à $stateParams. J'ai la portée de la variable dans un autre contrôleur qui peut être consulté à l'état du contrôleur, il est tout simplement pas disponible à l'état lui-même. J'ai essayé de la templateProvider mais c'est seulement de me retourner une chaîne de caractères. Quoi d'autre puis-je essayer pour que cela fonctionne?
.state('list', {
abstract: true,
url: "/list",
templateUrl: 'views/'+$stateParams.somevalue+'/page.html',
controller: "myCtrl"
})
.state('list.first', {
url: "/first",
templateUrl: "views/first.html"
})
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder à l'état params dans le
$stateChangeStart
événement. Vous pouvez également mettre à jour dynamiquement letemplateUrl
il ainsi.Alors peut-être que votre code pourrait ressembler à quelque chose comme ceci:
Vous pouvez également jeter un oeil à la onEnter de rappel pris en charge par l'interface utilisateur.routeur. Je n'ai pas utilisé cela avant, mais il pourrait être plus soignée que de mettre votre modèle de génération de code dans le
$stateChangeStart
événement.Vous pourriez être à la recherche pour le nom du modèle de dynamique basée sur l'état params
Voir la documentation pour plus d'informations
https://github.com/angular-ui/ui-router/wiki#templates
$stateParams
pourrait ne pas être suffisant dans certains cas. Donc @biofractal 's réponse pourrait être le cas plus général solutonCette référence ici a été formidable pour moi de trouver comment faire des modèles dynamiques dans angulaire, mais je voudrais le mettre à jour avec ma propre solution.
Solution 1 basé sur Dipesh Kc (cela fonctionne très bien pour la redéfinition de parent templateUrl pour les états abstraits) Notez que j'ai utilisé toParams au lieu de $stateParams:
Solution 2 sur la base d'biofractal de l' (il n'y a aucun moyen de mettre à jour un parent templateUrl à l'aide de cette méthode):