gpt4 book ai didi

javascript - angularjs $resource 类级回调,或后处理

转载 作者:可可西里 更新时间:2023-11-01 02:54:43 25 4
gpt4 key购买 nike

我有一个 $resource,它的 API 总是会返回一些在进入表示层之前需要清理的数据。具体来说,它是 .NET 以可爱的 '/Date(...)/' 格式返回 Date 对象。

我不想每次调用 .query().get() 时都必须编写回调。是否有某种方法可以通过在更新实例属性的 REST 方法上调用回调来扩展资源,或者通过添加某种 $watch 在日期属性更改时触发?基本上,此 $resource 的每个实例都会发生一些事情。

angular.module('myAppServices', ['ngResource'])
.factory('Participant', ['$resource', function ($resource) {
var res = $resource('api/url/participants/:id', { id: '@id' });

// This obviously doesn't work, but something kinda like this?
res.prototype.$watch(this.FieldName, function(newVal, oldVal) {
if (needsCleaning(newVal.fieldName) {
this.FieldName = cleanupField(newVal);
}
};
});

最佳答案

啊哈,我找到了绕过它的方法,我会把它留在这里。在 1.1.2 版中,他们添加了对将所有 $http.config 选项传递给 $resource 的支持。当然,我使用的 CDN 没有足够新的 angular-resource.js 版本,但切换 CDN 解决了​​这个问题。

我刚刚使用 transformResponse 选项在数据返回时对其进行修改。

angular.module('myAppServices', ['ngResource'])
.factory('Participant', ['$resource', '$http', function ($resource, $http) {
var res = $resource('api/url/participants/:id', { id: '@id' }, {
save: {
method: 'POST',
transformResponse: $http.defaults.transformResponse.concat([
function (data, headersGetter) {
data.FieldName = yourDateParsingFunction(data.FieldName);

return data;
}
])
}
});

我只是将我的转换器添加到 $httpProvider 的 transformResponse 上,它将执行所有的反序列化等操作。

关于javascript - angularjs $resource 类级回调,或后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com