저는 Angular를 처음 접했고 샘플 워크 플로우를 만들기 시작했습니다. 저는 사용자를 인증하고 로그인 한 사용자 세부 정보를 보존하는 각도 서비스를 제공합니다.각도 서비스 객체의 인스턴스가 여러 개 생성됨
편집 : 전체적으로 두 개의 별도 HTML 페이지가 있는데 두 개의 인스턴스를 만드는 문제가 발생합니다.
studentApp.factory("loginService", function(){
this.loggedUser="Guest!";
return{
checkCredentials : function(user){
//Authenticating logic goes here.
this.loggedUser =user.username;
}
};
});
성공적으로 로그인하면 홈 페이지가 표시되고 서비스에 다시 액세스하여 html 페이지에 로그인 된 사용자 이름을 출력합니다.
studentApp.controller("headerController", ["loginService", function(loginService){
var vm = this;
vm.loggedUser = loginService.loggedUser;
}]);
하지만 'Guest'가 사용자 이름 대신 표시되는 것처럼 보입니다. 새로운 서비스 인스턴스가 생성되고 있다고 느낍니다. 공장에서 getter 메소드를 사용하여
'checkCredentials'기능을 언제 호출합니까? 새 사용자 이름을 설정합니다 – Disha
로그인 양식이 제출되면 호출됩니다. ng-submit = "lc.formSubmitted()" – Raghav
"자격 증명 검사"메서드가 호출 될 때 "이"가 무엇인지 확인합니다. 나는 그것이 더 이상 서비스가 아닐지도 모른다. 익명 함수 구문을 사용해보십시오. 이렇게하면 생성되는 범위에서 "this"가 유지되는 클로저가 만들어집니다. 예 : "checkCredentials : (user) => {" –