2015-12-13 47 views
1

我正在嘗試使用角度來構建登錄功能;但我得到引用錯誤:登錄函數調用後重定向用戶

ReferenceError: $state is not defined 

我明白$狀態不是從內部登錄功能工作,但我不知道什麼是正確的程序來重定向用戶一旦登錄函數被調用。

我的代碼:

(function() { 
    'use strict'; 
    angular 
     .module('app') 
     .controller('authController', authController); 

    authController.$inject = ['$scope','$state']; 

    function authController($scope,$state) { 

     $scope.login = login; 
     $scope.user = {email: '', pass: ''}; 

    }; 

    function login(){ 
     this.dataLoading = true; 

     $state.go("dashboard");  

    }  
})(); 
+0

只需在'authController()'中定義'login()'函數即可。 – bardzusny

回答

1

login功能應該是在控制器上下文中獲得訪問已在控制器功能被注入$狀態的依賴。

正如你想從HTML中調用login函數,那麼它應該放在控制器中。

function authController($scope,$state) { 

    $scope.login = login; 
    $scope.user = {email: '', pass: ''}; 
    function login(){ 
     this.dataLoading = true; 
     $state.go("dashboard"); 
    } 
    $scope.login = login; //to call method from html 
}; 

OR

還是你想放置的角度範圍內之外的功能,對於一些技術原因(理想情況下,不應該),那麼你可以使用可以訪問$state服務angular.injector

angular.injector(['app']).get('$state').go("dashboard"); 
+0

angular.injector()不需要模塊名稱?? –

+0

第一種選擇是可能的,但我希望在登錄功能中完成它;而不是將它帶回主控制器;第二個選項是hacky;也許我的邏輯不正確? – Ash

+0

@ArashKiani你從哪裏調用'login'方法? –