2015-10-02 2 views
0

J'ai une application web JavaScript où j'ai utilisé AngularJS pour faciliter les choses, mais maintenant j'ai rencontré un petit problème.AngularJS change de vue en ng-view depuis un contrôleur

Je souhaite modifier la vue d'un contrôleur ng. J'utilise $ location.path pour le faire, mais malheureusement, rien ne se passe. Si je vérifie l'objet $ location, le chemin sera changé correctement, mais la vue ne change pas.

J'ai un ng-view dans mon Home.html. Voici la config je l'ai écrit pour lui:

<html ng-app="app"> 
    ... 
    <body> 
     <div id="navigation-menu" ng-controller="NavigatorController"> 
      <a class="menulink" ng-class="{ active: isActive('/labels')}" href="#page2">Page2</a> 
      <a class="menulink" ng-class="{ active: isActive('/labels')}" href="#page3">Page3</a> 
     </div> 

     <div ng-view></div> 
    </body> 
</html> 

C'est la config que j'ai fait pour la routeProvider $ qui fonctionne parfaitement lorsqu'il est utilisé dans le MENUSYSTEM

myApp.config(function ($routeProvider) { 
$routeProvider 
    .when('/', { 
     templateUrl: 'Page1.html', 
     controller: 'Page1Controller' 
    }) 
    .when('/page2', { 
     templateUrl: 'Page2.html', 
     controller: 'Page2Controller' 
    }) 
    .when('/page3', { 
     templateUrl: 'Page3.html', 
     controller: 'Page3Controller' 
    }); 
}); 

En ouvrant l'application, je veux montrer la Page1.html dans le ng-view, donc cela est trié avec le '/' url, je suppose.

Le problème est, que de tous les autres contrôleurs, je veux être en mesure de revenir à la Page1.html.

J'ai essayé de faire un événement dans tous les autres contrôleurs, comme ceci:

$scope.NavigateBack = function() { 
    $location.path('/'); 
} 

Il ne fonctionne pas, malheureusement. Je ne reçois aucun message d'erreur cependant ... Je l'ai essayé avec des adresses différentes dans le chemin, comme "/ page2", mais rien n'a fonctionné. Qu'est-ce que je fais de mal, que la vue ne change pas et que la page ne navigue pas?

+0

devrait fonctionner correctement. Doit comment vous appelez 'NavigateBack' dans la vue. Avez-vous oublié d'utiliser '()' ou d'avoir une faute de frappe pour l'épeler? – charlietfl

Répondre

1

Je recommande d'utiliser

$window.location = "#/" 

mais ne pas oublié d'injecter fenêtre $ à votre contrôleur

0

Définir le comportement dans le Page2Controller, par exemple:

$scope.goBack = function(){ 
     $location.path("#/"); 
    } 

Et ajouter un peu de bouton à l'intérieur de Page2.html:

<button ng-click="goBack()">Return</button> 

Vous pourriez aussi avoir besoin de changer vos liens de navigation href attribut à #/page2 et #/page3