gpt4 book ai didi

AngularJS 转换响应

转载 作者:行者123 更新时间:2023-12-04 00:52:28 24 4
gpt4 key购买 nike

在 angularjs 资源中,我想将我的 json 数据转换为 JS 对象

//具有继承链的复杂对象
功能汽车(年份,品牌){
this.make = 制作;
this.year = 年;
}

var carResource = $resource("/api/car/id", {id: '@id'},
{
得到: {
方法:'GET',
转换响应:函数(数据, header Getter){
返回新车(data.make,data.year);
}
}
}
)

然而,这似乎并没有发生

我得到的是 $resource对象表示属性makeyear设置正确,但返回对象的原型(prototype)指向 $resource
有没有办法可以将我的 json 数据直接映射到我自己的对象?

还是我必须编写自己的“资源”实现?

最佳答案

transformResponse$http 上执行等级。
当您使用自定义配置对象自定义 $resource 操作时,该对象实际上被传递到底层 $http服务。因此,如果您指定 transformResponse回调,它将在$http上执行级别,并且您的转换结果将传递回 $resource。
$resource 服务将从您的响应数据中实例化一个新对象(它已经被 transformResponse 回调转换)并且这个新对象将是 $resource 本身的一个实例。
所以,你的 car对象 成为 Car 的一个实例,但只是片刻,直到它的属性被复制到一个新的 $resource目的。
这是该过程的简单 View :

  • $resource 服务发起请求
  • $http 服务发送请求并接收响应
  • $http 服务转换响应(响应现在是 Car 的实例)
  • $resource 服务接收转换后的响应(来自 $http)
  • $resource 服务使用转换后的响应属性创建自己的实例(结果现在是 $resource 的实例)

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

    关于AngularJS 转换响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21515481/

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