我想在Angular中创建一个服务来存储从Nodejs收到的用户ID。
所以我创建了一项服务:
MyApp.service('myservice', function(id) {
var userId = id;
return userId;
});
在我的控制器中:
MyApp.controller("MyCtrl", function($scope, $http, myservice){
$scope.senduser = function(user){
$http.post("/login", user).then(function(response){
if(response.data){
console.log(response.data);
myservice(response.data.id); //Store the data received from Node to myservice
} else {
console.log("No Data");
}
});
}
});
我无法将数据存储在服务中。如何将userid存储在服务中以便以后访问它?
答案 0 :(得分:1)
服务代码可以是这样的:
MyApp.factory('myservice', function() {
var userId;
setUserId = function(id) {
userId = id;
}
getUserId = function() {
return userId;
}
return {
setUserId : setUserId,
getUserId : getUserId
}
});
在控制器中,您可以设置并获取如下值:
MyApp.controller("MyCtrl", function($scope, $http, myservice){
$scope.senduser = function(user){
$http.post("/login", user).then(function(response){
if(response.data){
console.log(response.data);
myservice.setUserId(response.data.id); //Store the data received from Node to myservice
} else {
console.log("No Data");
}
});
}
});
答案 1 :(得分:0)
服务工厂函数生成表示应用程序其余部分服务的单个对象或函数。
将您的服务代码更改为以下内容。
MyApp.service('myservice', function() {
// setting some default value
this.userId = 0;
});
MyApp.controller("MyCtrl", function($scope, $http, myservice){
$scope.senduser = function(user){
$http.post("/login", user).then(function(response){
if(response.data){
console.log(response.data);
myservice(response.data.id); //Store the data received from Node to myservice
myservice.userId = response.data.id
} else {
console.log("No Data");
}
});
}
});