Javascript Angular$资源在transformRespone后访问元数据
我有以下API:Javascript Angular$资源在transformRespone后访问元数据,javascript,angularjs,Javascript,Angularjs,我有以下API: { "meta": { "total_item": 1, "number_of_pages": 1, "page_number": 1, "status": "Success" }, "data": [ { "name": "Operator 1", "short_name": "OP1", "_id": "534d69bba758b3b7839ba7b9", "__v":
{
"meta": {
"total_item": 1,
"number_of_pages": 1,
"page_number": 1,
"status": "Success"
},
"data": [
{
"name": "Operator 1",
"short_name": "OP1",
"_id": "534d69bba758b3b7839ba7b9",
"__v": 0,
"users": [
"532ef6e28b42970ab797444f"
]
}
]
}
我使用Angular$resource使用以下代码查询API:
var apiDataTransformer = function ($http) {
return $http.defaults.transformResponse.concat([
function (data, headersGetter) {
var result = data.data;
result.meta = data.meta;
console.log(result);
return result;
}
])
};
angular.module('ua.common').factory('uaApi', function($resource, $http){
var factory = {};
factory.operator_ressource = $resource(
'/operators/:operatorId',
{},
{'query': {method: 'GET', isArray: true, transformResponse: apiDataTransformer($http) } }
);
return factory;
})
如果我在控制台中打印对这些资源的查询结果,我得到的结果如下:
uaApi.operator_ressource.query({}, function(response){
factory.operators_list = response;
console.log(response);
});
// Console Output
[f, $promise: Object, $resolved: true]
0: f
__v: 0
_id: "534d69bba758b3b7839ba7b9"
name: "Operator1"
short_name: "OP1"
users: Array[1]
0: "532ef6e28b42970ab797444f"
因此,使用$resource,即使我使用transformResponse保存数据,我也会丢失我的元对象,这很烦人,因为我希望能够在page_number我怎样才能用角度来实现这一点?(我认为这是使用paginate api的angular应用程序的常见问题)。您可以从查询方法返回一个对象,包括边带分页数据和资源对象数组,并在transformResponse中实例化它们 大致如下:
angular.module('ua.common').factory('uaApi', function($resource, $http){
var factory = {};
factory.operator_ressource = $resource('/operators/:operatorId', {},
{'query':
{ method: 'GET',
isArray: false,
transformResponse: function(jsondata){
return { meta : jsondata.meta,
results : jsondata.map(function(result){
return new factory.operator_ressource(result);
})
}
}
}
}
);
return factory;
});
这种方法对我很有效;我通常实例化一个寻呼机对象并返回一个$resource对象数组。为什么要进行转换?另外,首先为结果变量指定一个数组,然后尝试添加属性。您应该创建一个结果对象,然后为meta和data array创建两个属性。我这样做是因为在$resource查询中使用这样的结构会导致问题,因为angular正在等待数组。看起来这是不可能的,也不是计划中的