调用登录功能后重定向用户

时间:2015-12-13 17:29:29

标签: angularjs angular-ui-router

我正在尝试使用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");     

    }       
})();

1 个答案:

答案 0 :(得分:1)

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
};

由于某些技术原因(理想情况下不应该),您仍然希望将该功能置于角度上下文之外,然后您可以使用$state

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