2016-03-29 9 views
4

Ich bin neu in eckigen js und versuche mit ng-view und ngRoute Direktiven zu arbeiten.Wie ändere ich die Ansicht vom Controller in angular js?

Ich habe einen loginPage.html, in denen ich geschrieben Code für Login-Button haben wie folgt

<button class="button button-block" ng-click="login()">Log In</button> 

und auf Klick auf den Button die Login-Funktion in loginController erhalten ausgeführt und mein Controller wird wie folgt geschrieben:

var App = angular.module('App', ['ngRoute']); 

App.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/', { 
     templateUrl: 'loginPage.html', 
     controller: 'loginController' 
     }). 
     when('/home', { 
     templateUrl: 'homePage.html', 
     controller: 'homeController' 
     }); 
    }]); 

App.controller('loginController', ['$scope', '$http', '$location', function($scope, $http) { 
    console.log("Hello from login controller"); 


    $scope.login = function() { 
     //console.log($scope.user); 
     $http.post('/login', $scope.user).success(function(response) { 
      if(response.status == "true") 
       //if the response is true i want to go to homepage.html. 

      else 
       $scope.error="Invalid login! Please try again"; 
       $scope.user.email=""; 
       $scope.user.password=""; 
     }); 
    }; 

}]); 

Wenn die response.status==true dann möchte ich meine Sicht auf /home ändern. Kann mir bitte jemand sagen, wie man das macht?

Vielen Dank.

Antwort

1
if(response.status == "true") 
    $location.path("/home"); 

Vergessen Sie nicht $location auf Ihre Reglerparameter wie folgt hinzufügen :

['$scope', '$http', '$location', function($scope, $http, $location)... 

Auch wickeln Sie Ihre else Anweisung in Klammern, oder auch nur die erste Zeile in der Aussage:

else { 
    $scope.error="Invalid login! Please try again"; 
    $scope.user.email=""; 
    $scope.user.password=""; 
} 
+1

Dank, es funktionierte! Ich habe vergessen, den $ -Position zu den Controller-Parametern hinzuzufügen – Minions

1

Verwendung $location.path:

if(response.status == "true") { 
    $location.path('/home'); 
} 

Auch Sie verpasst haben $location in der Steuerung dependancy Liste hinzugefügt:

function($scope, $http, $location) 
0
if(response.status == "true") 
    $location.path("/home");