Afin de basculer entre différentes vues, vous pouvez modifier directement le window.location (en utilisant le service $ location!) Dans le fichier index.html
<div ng-controller="Cntrl">
<div ng-click="changeView('edit')">
edit
</div>
<div ng-click="changeView('preview')">
preview
</div>
</div>
Controller.js
function Cntrl ($scope,$location) {
$scope.changeView = function(view){
$location.path(view); // path not hash
}
}
et configurez le routeur pour basculer vers différents partiels en fonction de l'emplacement (comme indiqué ici https://github.com/angular/angular-seed/blob/master/app/app.js ). Cela aurait l'avantage de l'histoire ainsi que l'utilisation de ng-view.
Alternativement, vous utilisez ng-include avec différents partiels, puis utilisez un ng-switch comme indiqué ici ( https://github.com/ganarajpr/Angular-UI-Components/blob/master/index.html )
<a href="https://stackoverflow.com/edit">Edit</a>
Angular s'assurera que le clic ne crée pas de rechargement de page. Ce comportement peut être modifié afin qu'il déclenche un rechargement si cela est souhaité.La réponse fournie est absolument correcte, mais je voulais développer pour tous les futurs visiteurs qui voudraient le faire un peu plus dynamiquement -
Dans la vue -
Dans le contrôleur -
Même concept de base que la réponse acceptée, en y ajoutant simplement du contenu dynamique pour l'améliorer un peu. Si la réponse acceptée veut l'ajouter, je supprimerai ma réponse.
la source
url
est en fait l' adresse Web complète , y compris le protocole (http: //) et tout. Comme l'indique$location.path()
votre variable, il vaut mieux le décrire comme unpath
.J'ai un exemple qui fonctionne.
Voici à quoi ressemble mon doc:
Voici à quoi ressemble mon partiel:
Voici à quoi ressemble mon Ctrl:
l'application est mon module:
J'espère que cela vous sera utile!
la source
La méthode utilisée pour toutes les réponses précédentes à cette question suggère de changer l'URL qui n'est pas nécessaire, et je pense que les lecteurs devraient être conscients d'une solution alternative. J'utilise ui-router et $ stateProvider pour associer une valeur d'état à un templateUrl qui pointe vers le fichier html pour votre vue. Ensuite, il suffit d'injecter l'état $ dans votre contrôleur et d'appeler $ state.go ('state-value') pour mettre à jour votre vue.
Quelle est la différence entre angular-route et angular-ui-router?
la source
Il y a deux façons de procéder:
Si vous utilisez ui-router ou
$stateProvider
, faites-le comme:si vous utilisez un routeur angulaire ou
$routeProvider
faites-le comme:la source
Sans faire une refonte complète de l'environnement de routage par défaut (# / ViewName), j'ai pu faire une légère modification de l'astuce de Cody et le faire fonctionner correctement.
le controlle
la vue
Ce qui m'a amené à cette solution, c'est lorsque j'essayais d'intégrer un widget Kendo Mobile UI dans un environnement angulaire, je perdais le contexte de mon contrôleur et le comportement de la balise d'ancrage régulière était également détourné. J'ai rétabli mon contexte à partir du widget Kendo et j'avais besoin d'utiliser une méthode pour naviguer ... cela a fonctionné.
Merci pour les messages précédents!
la source
J'espère que ceci vous aidera
la source
Cette petite fonction m'a bien servi:
Vous n'avez pas besoin du chemin complet, juste la vue vers laquelle vous passez
la source