【问题标题】:Why is Angular $resource polluting my data?为什么 Angular $resource 会污染我的数据?
【发布时间】:2014-10-28 03:30:29
【问题描述】:

我有一个 API 返回以下响应

{
   "keyA": [1,2,5],
   "keyB": [3,6,4],
   "keyC": [3,2,1]
}

我正在使用一个非常简单的服务来访问 API 端点

var $module = angular.module('mySimpleService', ['ngResource']);

$module.service('MyApiService', function(
    $resource
){
    return {
        entities: $resource('http://myapi.com/data', null, {
            'get': {
                method: 'GET',
                isArray: false,
                responseType: 'json'
            }
        })
    };
});

我这样调用服务

var apiData = MyApiService.entities.get()
.$promise.then(function(data){
    console.log(data);  
    console.log(Object.keys(data)); 
});

当我注销数据和对象键时,我可以看到 angular 已将 $promise$resolved 作为属性添加到我的数据中。由于我需要枚举键,这有点不方便。

我在这里错过了一个关键步骤吗?如何访问我的原始未污染响应?

【问题讨论】:

    标签: angularjs ngresource


    【解决方案1】:

    您可以使用对 .get 的回调来获取实体实例,而不是使用 Promise 本身。

    EntitiesApiService.entities.get(function (entity) {
        // entity is unpolluted
    });
    

    您仍然可以使用.$promise 来检查null, function (error) { 等的故障。

    【讨论】:

    • 刚刚试过这个,它仍然在响应中添加$promise$resolved
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多