Angularjs 调用登录函数后重定向用户

Angularjs 调用登录函数后重定向用户,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在尝试使用angular构建登录功能;但我得到了参考错误: ReferenceError: $state is not defined 我知道$state在登录函数内部不起作用,但我不确定调用登录函数后重定向用户的正确过程是什么 我的代码: (function () { 'use strict'; angular .module('app') .controller('authController', authController);

我正在尝试使用angular构建登录功能;但我得到了参考错误:

ReferenceError: $state is not defined
我知道$state在登录函数内部不起作用,但我不确定调用登录函数后重定向用户的正确过程是什么

我的代码:

(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");     

    }       
})();

login
函数应位于控制器上下文中,以访问已注入控制器函数中的$state依赖项

当您想从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
};

由于某些技术原因,您仍然希望将该函数置于angular上下文之外(理想情况下不应该这样),然后您可以使用
angular.injector

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

只需在
authController()
中定义
login()
函数。angular.injector()不需要模块名??第一个选项是可能的,但我希望在login函数中完成;而不是把它带回主控制器;第二种选择是黑客;也许我的逻辑不正确?@ArashKiani,您正在调用
login
method?@PankajParkar,从我的视图ng submit=“login()”@PankajParkar抱歉,我在发送消息后立即注意到了修改;现在工作正常了!干得好,谢谢:)