Make angularjs $resource return array of [OO] objects

前端 未结 2 527
不思量自难忘°
不思量自难忘° 2020-12-19 12:07

How to make angularjs $resource return an array of objects derived/prototyped from specified domain object?

Here is an example on http://plnkr.co/edit/AVLQItPIfoLwsg

相关标签:
2条回答
  • 2020-12-19 13:00

    Here is the completed plunker. Yes raw json is parsed to JSON object. It is using transformResponse as mentioned by Armando.

    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;
      }
    ]);
    

    Just to show title is not used from the raw resource, I modified title to noteTitle in Note and in html.

    0 讨论(0)
  • 2020-12-19 13:04

    You can manipulate your data using transformResponse option in your resource service definition (make sure to set isArray to true):

    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 讨论(0)
提交回复
热议问题