我是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”而不是用户名。 我觉得正在创建一个新的服务实例。
答案 0 :(得分:0)
尝试在工厂使用getter方法 - fiddle
示例 -
app.factory("loginService", function(){
this.loggedUser="Guest!";
return{
checkCredentials : function(user){
//Authenticating logic goes here.
this.loggedUser =user;
},
getLoggedUser : function(){
return this.loggedUser;
}
};
});
答案 1 :(得分:0)
我认为您使用不同的控制器进行登录和主页。如果是这样,您在每个控制器中使用this
,在每个控制器中创建新的服务实例。
studentApp.factory("loginService", function() {
return {
loggedUser : "Guest!",
checkCredentials: function(user) {
//Authenticating logic goes here.
this.loggedUser = user.username;
}
};
})
studentApp.controller("headerController", ["loginService", function(loginService){
$scope.loggedUser = loginService.loggedUser;
}]);
studentApp.controller("LoginController", ["loginService", function(loginService){
//login and then call checkcredentials();
loginService.checkCredentials("name");
}]);