AngularJS Http第一次变空

时间:2016-11-01 18:10:52

标签: angularjs rest http

我有这段代码

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请求的函数

我在一个按钮中调用此代码。我第一次点击按钮时,会返回一个空的回复' []'但是下次我点击按钮,它工作正常!!!。

谢谢你的帮助

1 个答案:

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