我有一个对象(数组类型),它的控制台表示看起来像下面的图像。请看图像
此数组由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
等属性,以及对象集合
//编辑:我在这里使用的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;
};
};
根据我的知识.at restangulr中的$ object解析了promise并带回了数据,同时我在控制台的图像中得到了resultArray,这里我可以记录这个数组,所以我觉得我得到了所有的来自服务器的数据并填写此对象。我应用了一些数组访问技术jquery和JavaScript,如索引库访问,关联访问,但我得到了未定义,即。
resultArray[1] //undifiend;
答案 0 :(得分:1)
在角度你可以使用angular.forEach(items,function(item){//你的代码在这里});
其中items是您要遍历的数组。
如果要访问某个特定位置,请使用[],例如var item = items [5]。
然后你可以做item.property。
您的问题是您在Array JS对象中设置属性:
extractedData.paginginfo = data.paginginfo;
您应该按原样返回对象数据,并在控制器中执行以下操作:
var results= data.result;
var pagInfo= data.paginationInfo;
angular.forEach(results,function(result){});
答案 1 :(得分:0)
看起来这个数组是用数字索引的(0..1..5);你应该能够使用ForEach(在Angular中)或.each(在Jquery中)简单地遍历它。
像(JQuery):
$.each(array, function(key, value)
{
// key would be the numerical index; value is the key:value pair of the array index's element.
console.log(value.firstname); // should print the firstname of the first element.
});
答案 2 :(得分:0)
首先,正如我在评论中所说,你不应该将命名属性附加到数组。返回包含所需内容的对象:
if (operation == "getList") {
return { values: data.result, paging: data.pagingInfo };
}
getList()
方法返回一个promise,因此您需要使用:
this.getUsers = function(pagenumber, recordsize) {
resourceBase.getList({
page: pagenumber,
size: recordsize
}).then(function (data) {
console.log(data.values[0]);
console.log(data.paging.totalRecords);
});
};
答案 3 :(得分:0)
您可以像这样访问您的数组属性:
链接中显示的代码:
var arrayTest = [{
id: 1,
name: "john",
lastname: "appleseed"
}, {
id: 2,
name: "john",
lastname: "appleseed"
}, {
id: 3,
name: "john",
lastname: "appleseed"
}];
var a;
for (a in arrayTest) {
console.log(arrayTest[a].id + " " + arrayTest[a].name + " " + arrayTest[a].lastname);
}