2013-05-05 7 views
12

Ich mag die Art und Weise, wie die query() Methode gibt ein Array von Ressourcen, die wieder auf dem Server gespeichert werden können.
Ich versuche Angular gegen das Modul Drupal RestWS zu verwenden, das ein Objekt mit mehreren "Meta" -Eigenschaften und eine Eigenschaft namens list zurückgibt, in der die tatsächlichen Daten gespeichert sind. Gibt es bitte eine Möglichkeit, der Ressource zu sagen, dass sie stattdessen dieses Array verwenden soll?Angularjs Ressource Abfrage() Ergebnis Array als eine Eigenschaft

Beispiel: GET author.json Rückkehr:

first: "http://dgh/author?page=0" 
last: "http://dgh/author?page=0" 
list: [{id:1, type:author, uid:{uri:http://dgh/user/1, id:1, resource:user}, created:1367770006,…},…] 
self: "http://dgh/author" 

Antwort

20

Mit der neuesten Version Angular (1.1.2 oder höher), die Ressource mit einem transformResponse konfigurieren:

var MyResource = $resource(
    '/author.js', 
    {}, 
    { 
     'get': { 
      method: 'GET', 
      transformResponse: function (data) {return angular.fromJson(data).list}, 
      isArray: true //since your list property is an array 
     } 
    } 
); 
+0

das sieht vielversprechend aus, aber ich kann es nicht zur Arbeit bringen, ich bekomme immer 'TypeError: Object # hat keine Methode 'push''. Ich denke, es ist ein Problem, das ich normalerweise habe, wenn ein Objekt für eine Methode zurückgegeben wird, die isArray: true hat. BTW, ist die neue Version irgendwo dokumentiert? – mojzis

+1

Hmm, ok. Ich werde sehen, ob ich es in einem JSFiddle beheben kann. Die Dokumente sind hier: http://code.angularjs.org/1.1.4/docs/api/ngResource.CAressource, aber die TransformResponse ist nicht so gut dokumentiert :( –

+0

Ich habe den Code ein bisschen geändert ist ein funktionierendes Beispiel: http://jsfiddle.net/59nhp/ (mit anderen Daten, also ist es nicht die gleiche Transformationsfunktion) –

Verwandte Themen