ui-router: Une route sans gabarit de vue
Est-il possible de configurer une route dans ui-router
qui ne dispose que d'un contrôleur? Le but étant qu'à une certaine URL, la seule chose que je voudrais faire est de prendre des mesures par programmation, et de ne pas afficher quoi que ce soit en termes de vue. J'ai lu dans les docs, mais je ne suis pas sûr si elles offrent un moyen pour ce faire.
Oui, j'ai lu ceci: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state, mais ce n'est pas tout à fait ce que je cherche.
Par exemple, disons juste que j'ai un corps de base avec vue:
<body ui-view></body>
Et certaines config de base:
//Routes
$stateProvider
.state('myaction', {
url: "/go/myaction",
onEnter: function() {
console.log('doing something');
}
});
Quand /go/myaction
est visité, la vue est vide. Est-il possible de faire cela?
- Un plunker devrait permettre de mieux visualiser le problème.
- Avez-vous essayé ce code? Cela fonctionne? Si pas, ce qui ne va pas?
- Si vous tentez de le faire, alors quel que soit votre
ui-view
directive est on charge le modèle que vous (n'ont pas), qui, par conséquent, votre avis est vide. - Les contrôleurs sont uniquement pour la gestion des vues. Comme mentionné ci-dessous, il ne sera pas instancié si aucun modèle n'est spécifié. Si vous êtes en train de faire quelque chose par programme, alors
onEnter
est la chose correcte à utiliser. - Ne faut-il pas d'itinéraire toujours à la carte à vue? Peut-être que vous devez exécuter votre code en fonction d'un événement.
- C'est pourquoi ce est un gestionnaire d'état et non un itinéraire. La doc parle de la façon dont le gestionnaire d'état peut ou peut ne pas inclure un itinéraire: AngularUI Routeur est un framework de routage pour AngularJS, ce qui vous permet d'organiser les parties de votre interface d'une machine à état. Contrairement à l' $service de l'itinéraire dans l'angle ngRoute module, qui est organisé autour URL routes, UI-Router est organisé autour des états, qui peut éventuellement avoir des routes, ainsi que d'autres comportements, ci-joint.
- Avez-vous jamais comprendre cela?
- En fait, oui! J'ai redirigé vers un état valide AVEC une vue 🙂 je Viens de l'intelligence sur elle. J'ai posté le code explicite comme une réponse pour vous.
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de résoudre ce problème par la réorientation de la tête de l'état, j'ai été prise de l'action des programmes dans l'état AVEC une vue à la fin de la tête de l'état:
Vous ne pouvez pas avoir un contrôleur sans vue mais vous pouvez utiliser
onEnter
au lieu d'un contrôleur. Si vous ne souhaitez pas modifier l'affichage en cours lors de l'accès à cet état, vous pouvez le définir comme un état d'enfant:Maintenant dans
home.html
vous pouvez faire quelque chose comme ceci:De la documentation:
Pourquoi ne pas utiliser une chaîne vide comme un modèle pour surmonter cela?
ui-view
directive est spécifié sur, est vide.Oui, vous pouvez le faire. Utilisation absolue d'afficher les noms à utiliser de nouveau le
<ui-view>
d'un autre état.Prendre un coup d'oeil à cet exemple:
Pour les utilisateurs de mon application, mais en fonction de leur être authentifié ou non, je veux les envoyer à un public ou privé de la page. J'utilise le
index
état purement pour voir si ils sont connectés ou non, et puis de les rediriger versindex.private
ouindex.public
.L'enfant, les etats utilisent absolue d'afficher les noms d'utiliser le
<ui-view>
élément qui correspond à laindex
état. De cette façon, je n'ai pas besoin de faire une deuxième instruction<ui-view>
.Une petite remarque sur cet exemple: je suis en utilisant le
@
raccourci ici. Normalement vous devriez utiliserviewname@statename
.Ma solution c'était juste pour comprendre un modèle (fichier html) qui est vide.