我试图在 Angular 中使用 ng Repeat 来重复多维数组的子数组。 我的 json 对象是这样的:
$scope.items = [{ "id":1,
"BasisA":"1",
"Basis":true,
"personSex":"m",
"isCollapsed":false,
"name":"Mark Polos",
"age":"1955",
"results":[{"1000":{"company_name":"***","model":"***","modelname":"***","pr":222,"rating":4.5,"priority":9,"matching":1},
"1001":{"company_name":"***","model":"***","modelname":"***","pr":228.7,"rating":5.7,"priority":7,"matching":2},
"1002":{"company_name":"***","model":"***","modelname":"***","pr":241.7,"rating":1.9,"priority":4,"matching":3}
}]
}]
我尝试过这样的事情:
... data-ng-repeat="item in items">
然后在这个 child 的表中:
<tr data-ng-repeat="i in item | orderBy:'insItem.pr'">
最佳答案
结果属性看起来实际上并不是一个“数组”。如果这只是您的示例中的拼写错误,请忽略。如果没有......请继续阅读。
它看起来像一个包含单个项目的数组,该项目是一组属性,而这些属性又是对象。换句话说,您可以使用类似于 item.results[0]["1000"].pr
的代码来引用名为“1000”的结果的属性“pr”,而不是使用看起来像的代码你的 ng-repeat 期望的方式(item.results[0].pr
)。
您能否在获得项目时对其进行转换,以使结果成为真正的数组?
或者 - 您可以在 Controller 内部使用一个函数来返回您正在查找的数组吗?
查看代码:
<... data-ng-repeat="result in resultsFromItem(item)" >
Controller 代码:
$scope.resultsFromItem = function (item) {
if(item==undefined || item.results==undefined || item.results.length==0) {
return [];
}
var myResults = [];
for (var key in item.results[0]) {
if(item.results[0].hasOwnProperty(key)) {
myResults.push(item.results[0][key]);
}
}
return myResults;
}
如果您愿意,您甚至可以决定将“转换后”的结果对象卡在每个项目对象上(这样您只需执行一次转换)。
关于javascript - ng 在数组中重复数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774423/