服务中的 $http returns 值 Angularjs 服务中的 $$state

$http in a service returns value in $$state in Angularjs Services

我编写了一个从服务器获取数据的服务。服务器在本地 运行 用于测试目的。我面临的问题是数据 如果 $http 写在服务中,则在 $$state 中返回。如果相同的 $http 写在控制器中,我会得到数据。

如果我键入 res.$$state.value.dat

,$$state 不会返回任何数据
aggregate.service('someService',function ($http) 
{

        var yearlyAPI = "http://localhost:3000/api";
        var yearly =[];
        return {
        getYearlyAgg : function()
        {
            if(yearly.length!=0)
            {   
              log("Returning Stored Data For yearly Agg");
              return yearly;
            }
            else
            {

            var startDate =  "2015-08-01";
            var endDate =  "2015-08-04";

            var params = {};
            params.startDate = startDate;
            params.endDate = endDate;

            var yearData = $http.get(yearlyAPI,{
                params :params
            });

                yearly=yearData;
                log("Returning New Data For yearly Agg");
                log(yearData);
                return yearData;
            }   
        }
    };  /*Return Ends*/
});

更改您的代码并试试这个:

aggregate.service('someService',function ($http,$q) 
{

        var yearlyAPI = "http://localhost:3000/api";
        var yearly =[];
        return {
        getYearlyAgg : function()
        {
            if(yearly.length!=0)
            {   
              console.log("Returning Stored Data For yearly Agg");
              return $q.when(yearly); //with this you will return a promise if yearly variable contain some object
            }
            else
            {

            var startDate =  "2015-08-01";
            var endDate =  "2015-08-04";

            var params = {};
            params.startDate = startDate;
            params.endDate = endDate;

            return $http.get(yearlyAPI,{
                params :params
            }).then(function(result){
               yearly.push(result.data); //here you will add your new value to yearly array
               return result.data; //you are returning new data after you stored it in yearly variable
             });

            }   
        }
    };  /*Return Ends*/
});

请与我们分享您的反馈。