使用AngularJS资源命中基于REST的服务

时间:2013-10-29 14:40:00

标签: angularjs

我有一个AngularJS应用程序。在这个应用程序中,我正在尝试ping REST API。此API返回订单列表。 我需要能够处理成功获取订单的情况。我还需要处理 获取订单的请求失败的情况。为了做到这一点,我正在使用ngResource 模块。我的控制器如下所示:

myController.js

myApp.controller('myController',
    function myController($scope, myService) {
        myService.getOrders(function(data) {
            $scope.orders = data;
        });
    }
);

myService的定义存储在 myService.js 中。那个文件看起来像这样:

app.factory("myyService", function($resource, $log) {
   return {
       getOrders: function(onSuccess) {
           var orders = $resource("http://localhost:1000/orders", { fetch:{method:'JSON'} });
           orders.fetch(function (response) {
               console.log(response);
                onSuccess(response.data);
           });
       }
   };
});

当我运行此代码时,我收到运行时错误。错误说:

TypeError: Object function g(b){z(b||{},this)} has no method 'fetch'

也许必须有一些我不理解的东西。在我看来,我看到fetch被定义了。

我的另一个问题是如何设置它以处理失败的请求?像404或502?

1 个答案:

答案 0 :(得分:0)

您忘记了URL参数后的花括号......

更改:http://localhost:1000/orders", { fetch :

收件人:http://localhost:1000/orders", {}, { fetch :

app.factory("myyService", function($resource, $log) {
   return {
       getOrders: function(onSuccess) {
           var orders = $resource("http://localhost:1000/orders", {}, { fetch : {method:'JSON'} });
           orders.fetch(function (response) {
               console.log(response);
                onSuccess(response.data);
           });
       }
   };
});

<强> [编辑]

要处理来自服务器端的错误,您需要在资源调用中设置第二个函数。

示例:

orders.fetch(function success() {...}, 
             function error() {... this will execute in a http error, 400 or 500}
);