我有这段代码
PedidosService.getProductbyID($scope.listProductos.ProductID).then(function (d) {
$scope.oneProduct = d.data.producto;
});
PedidosService是我工厂的名称,getProductbyId是我的http get请求,$ scope.oneProduct是我想要存储此请求结果的变量。
factory.getProductbyID = function (id) {
return $http.get('/Pedidos/GetProduct/' + id);
}
factory是我的工厂,getProductbyID是我调用http请求的函数
我在一个按钮中调用此代码。我第一次点击按钮时,会返回一个空的回复' []'但是下次我点击按钮,它工作正常!!!。
谢谢你的帮助
答案 0 :(得分:0)
据我所知,$http.get
返回一个promise,因为该调用是异步的。考虑到这一点,对$http.get
的典型调用应该是这样的:
$http.get('/someUrl', config).then(successCallback, errorCallback);
在你的上下文中我会这样做,所以工厂返回一个promise,在你的控制器中你将适当地处理成功和错误回调:
factory.getProductbyID = function (id) {
var deffered = $q.defer();
$http.get('/Pedidos/GetProduct/'+ id)
.then(function (result) {
deffered.resolve(result);
}, function (data) {
deffered.reject(data);
});
return deffered.promise;
}