Javascript 数组中的ng重复数组
我试图用ng repeat在角度上重复多维数组的子数组。 我的json对象是:Javascript 数组中的ng重复数组,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我试图用ng repeat在角度上重复多维数组的子数组。 我的json对象是: $scope.items = [{ "id":1, "BasisA":"1", "Basis":true, "personSex":"m", "isCollapsed":false, "name":"Mark Polos", "age":"1955", "results":[{"1000":{"
$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">
然后在这个孩子的表格中:
<tr data-ng-repeat="i in item | orderBy:'insItem.pr'">
您应该访问“结果”字段:
... data-ng-repeat="item in items">
<tr data-ng-repeat="i in item.results">
因为嵌套数组位于主对象的results属性中。看起来results属性实际上不是数组。如果这只是你的例子中的一个输入错误,那么忽略它。如果不是。。。继续读下去 它看起来像一个包含单个项的数组,该项是一组属性,而这些属性又是对象。换句话说,您将使用类似item.results[0][1000]的代码引用名为1000的结果的属性pr。pr不会使用与ng repeat期望的item.results[0]类似的代码 当您获取项目时,是否可以对其进行转换,以使结果成为真正的数组 或者-您可以在控制器中使用函数返回您要查找的数组吗 查看代码: 您甚至可以决定将转换后的结果对象挂起,使其脱离每个项对象,这样,如果您愿意,只需执行一次转换。我使用了三个嵌套的ng repeat指令来实现此滚动:-第三个ng repeat使用ng repeat=key,结果中的值功能来显示所有结果对象键和值,在这个答案的帮助下,我开始工作。orderBy:part还不起作用,如果有人知道如何实现它,那么欢迎任何帮助
<ul>
<li ng-repeat="item in items">
id: {{item.id}}, name: {{item.name}}, age: {{item.age}}, results:
<table>
<tr ng-repeat="result in item.results">
<td>
<table style="border: 1px solid black;">
<tr ng-repeat="(key, value) in result | orderBy: value.pr">
<td> {{key}} </td> <td> {{ value }} </td>
</tr>
</table>
</td>
</table>
</li>
</ul>
也许应该是@ema将其作为答案发布,你回答了他的问题。这是一个打字错误,对不起。。。但是,如果我现在在ng repeat{{i.model}中执行此操作,它将保持为空。。。当我这样做时,{{i}}它会给我所有的行,但是?你应该这样做-然后在测试代码时尝试{{val.model},然后请删除json中多余的空白。对我来说,json一开始是无效的。在我删除了一些空白后,一切正常。谢谢你能告诉我如何将整个对象转换成数组吗?等等。。。我们谈论的是什么?项目或项目或结果?它关系到整个结果。。。如果我能在使用前将代码转换成一个合适的数组,这会使事情变得更容易,不是吗?然后我不必总是调用该函数来转换!现在明白了。。。将很快进行编辑以提供该选项。
$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;
}
<ul>
<li ng-repeat="item in items">
id: {{item.id}}, name: {{item.name}}, age: {{item.age}}, results:
<table>
<tr ng-repeat="result in item.results">
<td>
<table style="border: 1px solid black;">
<tr ng-repeat="(key, value) in result | orderBy: value.pr">
<td> {{key}} </td> <td> {{ value }} </td>
</tr>
</table>
</td>
</table>
</li>
</ul>