【发布时间】:2014-12-23 11:14:28
【问题描述】:
我有一个对象(数组类型),它的控制台表示如下图所示。请看图
这个数组是由 restangulr 使用下面的代码创建的,
restangularProvider.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
if (operation == "getList") {
var extractedData;
extractedData = data.result;
extractedData.paginginfo = data.paginginfo;
return extractedData;
}
if (operation != "get") {
var item = { status: response.status };
feedBackFactory.showFeedBack(item);
}
return response.data;
});
如何从这个数组中读取元素,我想提取像paginginfo这样的属性,也是对象集合
// 我在这里使用的 EDIT :1 js 库 angularjsu 1.3.4 和 restangular 1.4
我的 app.js :这里我配置了 rest angular provider
restangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
if (operation == "getList") {
var extractedData;
extractedData = data.result;
extractedData.paginginfo = data.paginginfo;
return extractedData;
}
if (operation != "get") {
var item = {
status: response.status
};
feedBackFactory.showFeedBack(item);
}
return response.data;
});
//据我所知,这个函数会拦截每个ajax调用(api调用)并修改响应,不幸的是我需要应用自定义修改,因为getlist方法必须返回集合但我的api返回对象,所以根据restangular,上面的代码是可能的解决方案,在这里它可以获取数据。
userservice.js :这是使用restangular的角度服务
function(restangular) {
var resourceBase = restangular.all("account");
this.getUsers = function(pagenumber, recordsize) {
var resultArray = resourceBase.getList({
page: pagenumber,
size: recordsize
}).$object;
};
};
据我所知,restanulr 中的 .$object 解决了承诺并带回了数据,我也得到了 resultArray,它看起来像控制台中的图像,在这里我可以记录这个数组,所以我想我得到了所有来自服务器的数据并填写在此对象中。我应用了一些可用的数组访问技术 jquery 和 JavaScript,如索引库访问、关联访问,但我得到了未定义的 ie。
resultArray[1] //undifiend;
【问题讨论】:
-
你是如何在控制台中打印出来的?这意味着您已经可以访问该数组。
-
@MasNotsram,它的骄傲,但基于索引的访问不起作用,即 d[0] 导致未定义
-
仅供参考,将新属性分配给数组通常不好。您应该将分页信息与数组分开。例如
{ items: data.result, pagingInfo: data.pagingInfo }(或者您可以只使用data而无需创建新内容来包含其值。 -
您希望返回的值会去哪里?您的代码位于异步回调中。我假设您在未向我们展示的某些代码中遇到问题?您尝试访问数组的代码在哪里?
标签: javascript jquery arrays angularjs restangular