在初始化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;
}
}
});
这样做的目的是在批量保存之前检查是否有任何对象被更改。
如果我偏离标准,你能建议一个更好的方法来实现这个目标吗?
答案 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;
});
});