3

无论如何设置transformResponsea 的初始化后$resource

我基本上有一个扩展的$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;
    }
  }
});

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

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

4

1 回答 1

1

似乎你可以利用$promise那些$resource给你的东西......

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;
  });
});
于 2014-04-14T01:21:08.900 回答