2013-05-05 11 views
12

Podoba mi się sposób, w jaki metoda query() zwraca tablicę zasobów, które można ponownie zapisać na serwerze.
Próbuję użyć Angular przeciwko modułowi Drupal RestWS, który zwraca obiekt z kilkoma właściwościami "meta" i właściwością zwaną listą, w której są przechowywane rzeczywiste dane. Czy istnieje sposób informowania zasobu, aby wziął tę tablicę?Tablica wyników zapytania Angularjs jako właściwość

Przykład: GET author.json powraca:

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" 

Odpowiedz

20

W najnowszej wersji (1.1.2 kątowe lub później), można skonfigurować zasób z transformResponse:

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

to wygląda obiecująco, ale Nie mogę go uruchomić, ciągle otrzymuję 'TypeError: Object # nie ma metody 'push''. Myślę, że jest to problem, który zwykle mam, gdy zwracany jest obiekt dla metody, która ma wartość isArray: true. BTW, czy gdzieś jest udokumentowana nowa wersja? – mojzis

+1

Hmm, ok. Zobaczę, czy mogę to naprawić w JSFiddle. Dokumenty są tutaj: http://code.angularjs.org/1.1/docs/api/ngResource.$resource, ale transformResponse nie jest tak dobrze udokumentowane :( –

+0

Zmieniłem trochę kod. to działający przykład: http://jsfiddle.net/59nhp/ (z innymi danymi, więc nie jest to ta sama funkcja transformacji) –

Powiązane problemy