0

我有一个 AngularJS 应用程序。在这个应用程序中,我正在尝试 ping 一个 REST API。此 API 返回订单列表。我需要能够处理成功获得订单的情况。我还需要处理 GET 订单请求失败的情况。为了做到这一点,我正在使用 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?

4

1 回答 1

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}
);
于 2013-10-29T15:11:43.050 回答