Angular Controller Constructor:什么时候被调用?

时间:2015-10-09 15:33:28

标签: angularjs

我正在学习角度,并有一个示例登录代码。此代码具有一个构造函数,可在调用时清除凭据。我的问题是:何时调用构造函数?是在初始化代码时还是每次调用控制器上的方法时?我可能会把这与我的后端开发框架与DI一起工作的方式混淆,后者在初始化时只运行一次控制器的构造函数。

作为后续问题,我是否需要注销功能或构造函数是否足够好?

这是我目前正在查看的代码:

(function () {
'use strict';

angular
    .module('app')
    .controller('LoginController', LoginController);

LoginController.$inject = ['$rootScope', '$location', 'AuthenticationService', 'FlashService'];
function LoginController($rootScope, $location, AuthenticationService, FlashService) {
    var vm = this;

    vm.login = login;

    (function initController() {
        // reset login status
        AuthenticationService.ClearCredentials();
    })();

    function login() {
        vm.dataLoading = true;
        var promise = AuthenticationService.Login(vm.username, vm.password)
            .then(function(userInfo){

                AuthenticationService.SetCredentials(userInfo);
                $location.path('/');

            }, function(failedReason) {
                FlashService.Error(failedReason);
                vm.dataLoading = false;
            });
    };

    function logout() {
        AuthenticationService.ClearCredentials();
        $location.path('/login');

    };
}

})();

1 个答案:

答案 0 :(得分:8)

每次显示附加它的视图或指令时都会调用它。