javascript - 初始化后设置 $resource transformResponse

标签 javascript angularjs angularjs-resource

$resource 初始化后是否有设置 transformResponse 的方法?

我基本上有一个扩展的 $resource,但我想将 transformResponse 附加到扩展版本,而不是原始版本。

angular.module("services").factory('MyObject', function($resource) {
  var MyObject = $resource('/my/object.json');

  MyObject.prototype.someBusinessLogic = function() {};

  return MyObject;
});


angular.module("services").factory('MyExtendedObject', function($resource, MyObject) {
  MyObject.prototype.someExtendedBusinessLogic = function() {};

  return MyObject;
});

因此在该示例中,我想将 transformResponse 设置为类似这样的内容(仅在 MyExtendedObject 中):

$resource('/my/object.json', {}, {
  query: {
    method: 'GET',
    isArray: true,
    transformResponse: function(data) {
      var objects = angular.fromJson(data);
      for (var i = 0; i < objects.length; i++) {
        objects[i] = new MyExtendedObject(objects[i]);
        objects[i].hash = JSON.stringify(objects[i]);
      }
      return objects;
    }
  }
});

这样做的目的是在批量保存之前检查是否有任何对象被更改。

如果我偏离了标准,你能建议一个更好的方法来实现这个目标吗?

最佳答案

似乎您可以利用$resource 给您的$promise...

angular.module("services").factory('MyExtendedObject', function($resource, MyObject) {
 MyObject.get({whatever:'here'}).$promise.then(function(result){
    var transformedStuff = result; 
    //<!--do transform stuff here-->
    return transformedStuff;
  });
});

关于javascript - 初始化后设置 $resource transformResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418279/

相关文章:

javascript - Article.createdAt.toLocalDateString 不是函数

javascript - 如何修复或解决 iPhone 上的亚像素处理问题?

javascript - 在 Vue.Filter 中使用 Vue.Mixin 不起作用

JavaScript - 获取非预定义键的值

angularjs - Aptana AngularJS 支持

angularjs - 如何从 Angular 资源 $save() 读取响应并保留原始数据

javascript - 通过多个复选框和属性问题进行 Angular 过滤

angularjs - 为什么使用 common 和 post 来更改 ContentType 的差异会影响请求负载/表单数据?

angularjs - ngResource 解析嵌套资源

javascript - 创建元素后添加CSS