AngularJS transformResponse

前端之家收集整理的这篇文章主要介绍了AngularJS transformResponse前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
angularjs资源中,我想将我的json数据转换成JS对象
//Complex object with inheritance chain
function Car(year,make){
    this.make = make;
    this.year = year;
}


var carResource = $resource("/api/car/id",{id: '@id'},{
        get: {
            method: 'GET',transformResponse: function(data,headersGetter){
                return new Car(data.make,data.year);
            }
        }
    }
)

不过这似乎并没有发生

我回来的是一个$资源对象,意味着属性make和year都正确设置,然而返回的对象的原型指向$resource

有没有办法可以将我的json数据直接映射到我自己的对象?

还是要写自己的“资源”实现?

transformResponse在$http级别上执行.

当您使用自定义配置对象定制$资源操作时,该对象实际上传递到底层的$http服务.所以如果你指定一个transformResponse回调函数,它将在$http级别执行,你的转换结果将被传回给$resource.

$资源服务将从您的响应数据(已由transformResponse回调转换)中实例化新对象,并且此新对象将是$资源本身的一个实例.

所以,你的汽车对象将是汽车的一个实例,但只有一会儿,直到它的属性被复制到一个新的$资源对象.

这是一个简单的过程:

> $资源服务启动请求
> $http服务发送请求并收到响应
> $http服务转换响应(响应现在是Car的实例)
> $resource服务接收转换的响应(从$http)
> $资源服务使用转换的响应属性(现在是$资源的实例)使自身的一个实例

无论如何,我不建议装饰或扩展$资源服务,因为使用$http服务编写自己的实现更为简单.

猜你在找的Angularjs相关文章