2014-05-07 27 views
5

Angularjs $ kaynağını, belirtilen etki alanı nesnesinden türetilen/prototip edilen bir dizi nesneyi nasıl döndürür?

Note s nesnelerini işleyen http://plnkr.co/edit/AVLQItPIfoLwsgDzoBdK?p=preview numaralı bir örnek.

app.controller('MainCtrl', function($scope, NoteResource) { 
$scope.name = 'World'; 
$scope.notes = NoteResource.query(); 

$scope.spellCheckAllNotes = function() { 
    angular.forEach($scope.notes, function(note) { 
    note.spellCheck(); 
    }); 
} 
}); 

mesele o $ kaynak döner Resource s dizi değil prototipler eklenen Resource yöntemlerle Note s bir dizidir.

Sen kaynak servis tanımı transformResponse seçeneğini kullanarak verilerinizi işleyebilirsiniz

+0

A takip edin: http://stackoverflow.com/questions/23528451 – okigan

cevap

10

İşte tamamlanmış plunker. Evet ham json JSON nesnesine ayrıştırıldı. Armando tarafından belirtildiği gibi transformResponse kullanıyor. Sadece başlık göstermek için

app.factory('NoteResource', ['$resource', 
    function($resource) { 
    var res = $resource('http://okigan.apiary.io/notes/:id', {}, { 
     query: { 
     method: 'GET', 
     params: { 
     }, 
     isArray: true, 
     transformResponse: function(data, header){ 
      //Getting string data in response 
      var jsonData = JSON.parse(data); //or angular.fromJson(data) 
      var notes = []; 

      angular.forEach(jsonData, function(item){ 
      var note = new Note(); 
      note.noteTitle = item.title; 
      notes.push(note); 
      }); 

      return notes; 
     } 
     } 
    }); 
    return res; 
    } 
]); 

ham kaynaktan kullanılmaz, ben Note ve html noteTitle için title güncellenmiştir.

+1

, var jsonData = angular.fromJson (data); – Spencer

+0

Evet, kesinlikle buna göre güncellenmiş bir seçenek, teşekkürler. @Spencer – dmahapatro

+0

Güzel! plunker: http://plnkr.co/edit/AVLQItPIfoLwsgDzoBdK?p=preview – okigan

1

[çözüm javascript uygulamaları "iyi" takip edecektir] (true isArray ayarlamak için emin olun):

angular.module('services', ['ngResource']). 
    factory("yourService", function ($resource) { 
     return $resource(
      '/custom/url', {}, { 
      get: { 
       method: 'GET', 
       isArray: true, 
       transformResponse: function(data, headers){ 
        // 
        // transform to array of objects 
        return data; 
       } 
      } 
     } 
    ); 
}); 
+0

veri ham json gibi görünüyor, nesneler değil - lütfen çözümü tamamlayın (plunker'da butonun mesajını gösterecektir) – okigan

+0

Açıklamalarda yazıyor : "nesnelerin dizisine dönüşür" kendi mantığınızı eklemeniz gerekir. JSON ayrıştırma için –

İlgili konular