我正在学习角度,并有一个示例登录代码。此代码具有一个构造函数,可在调用时清除凭据。我的问题是:何时调用构造函数?是在初始化代码时还是每次调用控制器上的方法时?我可能会把这与我的后端开发框架与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');
};
}
})();
答案 0 :(得分:8)
每次显示附加它的视图或指令时都会调用它。