服务中的 $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*/
});
请与我们分享您的反馈。
我编写了一个从服务器获取数据的服务。服务器在本地 运行 用于测试目的。我面临的问题是数据 如果 $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*/
});
请与我们分享您的反馈。