加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS transformResponse

发布时间:2020-12-17 07:33:33 所属栏目:安全 来源:网络整理
导读:在 angularjs资源中,我想将我的json数据转换成JS对象 //Complex object with inheritance chainfunction Car(year,make){ this.make = make; this.year = year;}var carResource = $resource("/api/car/id",{id: '@id'},{ get: { method: 'GET',transformRes
在 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服务编写自己的实现更为简单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读