ng-include заставляет блок контроллера перерисовываться
Я пытаюсь использовать ng-switch с ng-include ниже. Проблема в ng-init, и весь блок контроллера перерисовывается при любом изменении ng-include.
В файле login_form.html, когда пользователь входит в систему, я устанавливаю isLoggedIn = true в LoginCtrl. Однако это вызывает повторную визуализацию полного HTML ниже, что снова вызывает ng-init.
Как мне избежать этого цикла?
Ниже приведен HTML-код для формы входа в систему -
Sign In
Ниже находится контроллер -
angularApp.controller('LoginCtrl', function($scope, currentUser){
$scope.loginStatus = function(){
return currentUser.isLoggedIn();
};
/* $scope.$on('login', function(event, args) {
$scope.userName = args.name;
});
$scope.$on('logout', function(event, args) {
$scope.isLoggedIn = false;
});*/
$scope.login = function(email, password){
currentUser.login(email, password);
};
$scope.logout = function(){
currentUser.logout();
};
});
Удар это услуга -
angularApp.factory('currentUser', function($rootScope) {
// Service logic
// ...
//
var allUsers = {"[email protected]": {name: "Robert Patterson", role: "Admin", email: "[email protected]", password: "rob"},
"[email protected]":{name: "Steve Sheldon", role: "User", email: "[email protected]", password: "steve"}}
var isUserLoggedIn = false;
// Public API here
return {
login: function(email, password){
var user = allUsers[email];
var storedPass = user.password;
if(storedPass === password){
isUserLoggedIn = true;
return true;
}
else
{
return false;
}
},
logout: function(){
$rootScope.$broadcast('logout');
isUserLoggedIn = false;
},
isLoggedIn: function(){
return isUserLoggedIn;
}
};
});