以角度创建服务

时间:2017-03-20 22:29:32

标签: angularjs node.js angular-services

我想在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存储在服务中以便以后访问它?

2 个答案:

答案 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");
         }
       });
    }
 });