Angularjs 角度控制器构造函数:何时调用它?
我正在学习angular并有一个示例登录代码。此代码有一个构造函数,在调用时清除凭据。我的问题是:何时调用构造函数?是在初始化代码时还是在每次调用控制器上的方法时?我可能会把这与我的后端开发框架与DI的工作方式混淆,DI在初始化时只为我的控制器运行一次构造函数 作为后续问题,我需要一个注销函数还是构造函数足够好 这是我目前正在查看的代码:Angularjs 角度控制器构造函数:何时调用它?,angularjs,Angularjs,我正在学习angular并有一个示例登录代码。此代码有一个构造函数,在调用时清除凭据。我的问题是:何时调用构造函数?是在初始化代码时还是在每次调用控制器上的方法时?我可能会把这与我的后端开发框架与DI的工作方式混淆,DI在初始化时只为我的控制器运行一次构造函数 作为后续问题,我需要一个注销函数还是构造函数足够好 这是我目前正在查看的代码: (function () { 'use strict'; angular .module('app') .controller('Login
(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');
};
}
})();
- 此代码基于Jason Watmore的博客-
- 我已经阅读了这里的文档一次:
如果已使用控制器作为语法连接控制器,则控制器实例将分配给新作用域上的属性。“不是单例。。。每次视图渲染时,每个useController构造函数的新实例都会调用。每次视图渲染时(模板、指令等)都会调用该实例,并且根据每次调用控制器时的代码(每次与控制器关联的模板渲染时)方法“initController”清除凭据,以便重新呈现将使您注销。此外,在LoginController中还有一个“logout()”函数……很抱歉,当我试图确定是否需要注销函数时,我添加了注销函数。