初始化后设置$ resource transformResponse

时间:2014-01-28 22:29:29

标签: javascript angularjs angularjs-resource

在初始化transformResponse

后,是否设置了$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;
    }
  }
});

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

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

1 个答案:

答案 0 :(得分: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;
  });
});