我有一个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?
答案 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}
);