2017-05-03 48 views
0

我有一个Api,其中检索自定义标题:X-Total-Count:“项目总数”,我使用的角度为ngResource使用ngResource访问标题

我厂是这样的:

app.factory("shopFactory", function ($resource) { 
    return { 
     User: $resource("http://localhost:58495/users/api/User/?id=:id", { id: "@id" }), 
     Category: $resource("http://localhost:58495/category/:id", { id: "@id" }), 
     Product: $resource("http://localhost:58495/products/?from=:from&to=:to", { from: "@from", to: "@to" }) 
    }; 
}); 

当我把它叫做:

var productServer = shopFactory.Product.query({ from: 0, to: 10 }).$promise.then(function (response) { 
     $scope.product = response; 
     console.log(response); 
    }, function (error) { 
     console.log("ERROR"); 
     console.log(error); 
    }); 

我怎样才能通过ngResource访问我的自定义标题,我可以,但用$访问HTTP,我想用$ resource的方式做,谢谢

回答

0

可以用三个参数调用query动作方法:

Resource.query([parameters], [success], [error]) 

使用(value (Object|Array), responseHeaders (Function), status (number), statusText (string))参数调用成功回调函数,其中值是填充的资源实例或集合对象。使用(httpResponse)参数调用错误回调。

var productServer = shopFactory.Product.query(
    { from: 0, to: 10 }, 
    function success (value, headers, status, statusText) { 
     $scope.product = value; 
     console.log(value); 
     console.log(headers()); 
    }, 
    function error (error) { 
     console.log("ERROR"); 
     console.log(error); 
    } 
); 

欲了解更多信息,请参阅AngularJS $resource Service API Reference


最新使用$promise.then和成功函数之间的差,

.then方法的功能仅仅暴露的最终响应的value。成功回调暴露了四个参数:value (Object|Array), responseHeaders (Function), status (number), statusText (string)

$promise可以作为参数传递给其他函数,其方法可以多次调用。

另一个非常重要的区别是.then方法根据返回的值创建了一个新的承诺。

链接承诺

,因为调用一个承诺的.then方法返回一个新派生的承诺,这是很容易可以创建承诺的一个链条。

它可以创建任何长度的链,并且自一个承诺可以与另一个承诺(这将进一步推迟其分辨率)来解决,所以能够暂停/在任何点推迟的承诺的决议链。这使得实现强大的API成为可能。

— AngularJS $q Service API Reference (Chaining Promises)

+0

谢谢,它的工作完美无缺。我只有一个问题,使用$ promise.then和成功函数有什么区别,非常感谢。 –