Angularjs $http.get 服务没有返回数据给调用控制器函数
Angularjs $http.get service not returning data to calling controller function
大家好我确信这个问题有一个简单的解决方案,但我自己似乎找不到...
我有一个控制器,它通过调用定义为 GetDataService
的服务将数据分配给 $scope.items 变量
$scope.items = GetDataService.getData('/getBroadcastSourceList/1');
服务设置如下:
angular.module('appName')
.service('GetDataService', function($http, WebServiceURL) {
this.getData = function(ServiceParameter) {
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
return res.data;
});
};
});
我在 GetDataService 中单步执行了我的代码,可以看到 res.data 确实包含所有相关数据,但是这些数据没有发送到我的控制器中的 $scope.items。
我还通过如下更改我的服务来检查我的控制器端是否一切正常:
angular.module('appName')
.service('GetDataService', function($http, WebServiceURL) {
this.getData = function(ServiceParameter) {
return [{
Day: "Monday",
Language: "English "
}]
};
});
这确实填充了 $scope.items,所以问题一定出在此处:
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
return res.data;
});
我做错了什么?
$http 服务本质上是异步的,因此您需要在回调中分配数据
GetDataService.getData('/getBroadcastSourceList/1').then(function(data) {
$scope.items=data;
})
另外你的服务没有return
,添加它。
this.getData = function(ServiceParameter) {
return $http.get(WebServiceURL + ServiceParameter)
您没有在服务的 getData 方法上重新调整任何内容尝试return一个承诺
angular.module('appName')
.service('GetDataService', function($http, $q WebServiceURL) {
this.getData = function(ServiceParameter) {
var defer = $q.defer();
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
defer.resolve(res.data);
}, function (err) { defer.reject(err)});
return defer.promise;
};
大家好我确信这个问题有一个简单的解决方案,但我自己似乎找不到...
我有一个控制器,它通过调用定义为 GetDataService
的服务将数据分配给 $scope.items 变量$scope.items = GetDataService.getData('/getBroadcastSourceList/1');
服务设置如下:
angular.module('appName')
.service('GetDataService', function($http, WebServiceURL) {
this.getData = function(ServiceParameter) {
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
return res.data;
});
};
});
我在 GetDataService 中单步执行了我的代码,可以看到 res.data 确实包含所有相关数据,但是这些数据没有发送到我的控制器中的 $scope.items。
我还通过如下更改我的服务来检查我的控制器端是否一切正常:
angular.module('appName')
.service('GetDataService', function($http, WebServiceURL) {
this.getData = function(ServiceParameter) {
return [{
Day: "Monday",
Language: "English "
}]
};
});
这确实填充了 $scope.items,所以问题一定出在此处:
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
return res.data;
});
我做错了什么?
$http 服务本质上是异步的,因此您需要在回调中分配数据
GetDataService.getData('/getBroadcastSourceList/1').then(function(data) {
$scope.items=data;
})
另外你的服务没有return
,添加它。
this.getData = function(ServiceParameter) {
return $http.get(WebServiceURL + ServiceParameter)
您没有在服务的 getData 方法上重新调整任何内容尝试return一个承诺
angular.module('appName')
.service('GetDataService', function($http, $q WebServiceURL) {
this.getData = function(ServiceParameter) {
var defer = $q.defer();
$http.get(WebServiceURL + ServiceParameter)
.then(function(res){
defer.resolve(res.data);
}, function (err) { defer.reject(err)});
return defer.promise;
};