2013-10-29 92 views
0

我有一個AngularJS應用程序。在這個應用程序中,我試圖ping一個REST API。該API返回訂單列表。 我需要能夠處理成功獲取訂單的場景。我還需要處理 場景,請求GET訂單失敗。爲了做到這一點,我使用ngResource 模塊。我的控制器看起來如下:使用AngularJS資源打擊基於REST的服務

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' 

也許必須有我不明白的東西。在我看來,我看到了獲取定義。

我的另一個問題是如何設置它來處理失敗的請求?像404或502一樣?

回答

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} 
); 
+0

你怎麼處理錯誤的關係嗎?例如,如果Web服務返回404或502會怎樣? –

+0

我用錯誤函數的例子編輯了我的答案。 –