2016-12-26 56 views
0

這裏是我的工廠方法:

.factory('lettersFactory', ['$resource', function ($resource) { 
 
\t var url = ""; 
 
    if(ionic.Platform.isAndroid()){ 
 
     url = "/android_asset/www/"; 
 
    } 
 
    return $resource(url + 'data/letters.json'); 
 
}])

這裏是控制器:

.controller('LettersCtrl', ['$scope','lettersFactory', '$stateParams', '$state', '$ionicPopover', function($scope, lettersFactory, $stateParams, $state, $ionicPopover) { 
 
    
 
     $scope.letters = lettersFactory.query(); 
 
     $scope.letter = lettersFactory.get({number:parseInt($stateParams.letterId, 10)}); 
 
}])

這裏是錯誤信息:

錯誤的資源配置爲行動object。預計響應包含一個數組,但有一個GET(請求:數據/ letters.json {4})

而且我letter.json是這樣的一個數組:

[ 

{"number":1, 
    "title": "title", 
    "content": "content"}, 
{"number":1, 
    "title": "title", 
    "content": "content"} 
] 

感謝

+0

檢查響應是否是一個數組或不.. –

回答

0

默認方法用於$resource集包含這些動作1

{ 'get': {method:'GET'}, 
    'save': {method:'POST'}, 
    'query': {method:'GET', isArray:true}, 
    'remove': {method:'DELETE'}, 
    'delete': {method:'DELETE'} }; 

在你的情況的get方法失敗,因爲從XHR數據是一個數組,並且該方法期望的對象。

query方法成功,因爲來自XHR的數據是一個數組,並且該方法需要一個數組。

對對象數據使用get方法;對陣列數據使用query方法。


更新

你覺得我怎麼可以用在這種情況下查詢方法從數組數據中的特定對象?

一種方法是使用返回的資源對象的$promise屬性:

$scope.array = lettersFactory.query(); 

$scope.array.$promise.then(function(resourceArray) { 
    $scope.item = resourceArray[0]; 
}); 

重要的是要認識到,調用$resource對象方法立即返回一個空引用(取決於isArray對象或數組是重要)。一旦從服務器返回數據,現有參考將填入實際數據。

資源實例和集合具有附加屬性:

  • $promise:創建此實例或收集原始服務器交互的promise

    成功時,承諾將使用相同的資源實例或集合對象解析,並使用來自服務器的數據進行更新。

    失敗時,承諾被拒絕,並且沒有資源屬性的http響應對象。

欲瞭解更多信息,請參閱AngularJS $resource API Reference

+0

你認爲我可以如何使用在這種情況下'query'方法從數組數據中獲取特定對象?我改變了'lettersFactory.get({number:parseInt($ stateParams.letterId,10)}); 'to'lettersFactory.query({number:parseInt($ stateParams.letterId,10)});'但它仍然有效。 –

+0

查看答案的更新。 – georgeawg

+0

謝謝@georgeawg。我試過了,它工作。 –

1

如果響應不應該是一個數組,那麼你需要在查詢屬性中將isArray設置爲false。

'query': {method: 'GET', isArray: false } 

請參閱文件。 https://docs.angularjs.org/api/ngResource/service/ $ resource

或者你可以從控制器傳遞json作爲數組。

+0

的letter.json是一個JSON數組,所以我希望能夠得到充分的陣列查詢()方法,以及使用get()方法的單個對象。我修改了返回值,如下所示:'return $ resource(url +'data/letters.json',{'query':{method:'GET',isArray:false}});'但它仍然給出相同的錯誤。 –

+0

@Awa驗證一次http://stackoverflow.com/questions/24409220/error-in-resource-configuration-expected-response-to-contain-an-object-but-got –