angularjs - 使 angularjs $resource 返回 [OO] 对象的数组

标签 angularjs angular-resource

如何使 angularjs $resource 返回从指定域对象派生/原型(prototype)化的对象数组?

这是 http://plnkr.co/edit/AVLQItPIfoLwsgDzoBdK?p=preview 上的示例处理一组 Note s 对象。

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

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

问题是 $resource 返回数组 Resource s 而不是 Note 的数组与 Resource添加到原型(prototype)的方法。

[解决方案应遵循“好的”javascript实践]

最佳答案

这是完整的 plunker .是的,原始 json 被解析为 JSON 对象。它正在使用 transformResponse正如阿曼多所说。

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

只是为了显示原始资源中没有使用标题,我修改了titlenoteTitleNote并在 html 中。

关于angularjs - 使 angularjs $resource 返回 [OO] 对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23523343/

相关文章:

javascript - 我如何为不同的 AngularJS Controller 使用工厂函数?

angularjs - ServiceStack:使用 DTO 中的属性来设置响应头和响应体

angularjs - 尝试测试通用 angularjs $resource 服务时出现未知提供程序错误

javascript - 拒绝 Angular $resource 的 $update 函数中的延迟

javascript - 如何从返回 JSON 的 REST Web 服务加载 ng 表中的数据

javascript - 在 Angular 中更改页面时,如何修复 yyyy 不是一个函数?

angularjs - 从 Select 更新 ngmodel

javascript - 如何将 angularjs $q.all() 与异步创建的 Promise 数组一起使用

javascript - Angular JS 中的实时重新加载

javascript - 如果选中另一个具有相同 ID 的复选框,如何禁用复选框