我想使用ng-repeat以asc顺序呈现数组对象。下面是一个数组对象。
$scope.Stepdetails=[{
[{
RequestId: 2024,
name:aa
}]
},
{
[{
RequestId: 2025,
name:aa
}]
},
{
[{
RequestId: 2023,
}]
}]
<td ng-repeat="Steps in Stepdetails ">
<div ng-repeat="step in Steps| orderBy: 'Steps.step.RequestId'">
</div>
</td>
答案 0 :(得分:1)
您正在尝试访问数组元素,但您的结构是一个对象,请尝试更改结构,例如:
$scope.Stepdetails=[ // Steps
[{ // Step
name:aa,
RequestId: 2024,
}]
,
[{
name:aa,
RequestId: 2025,
}]
,
[{
name:aa
RequestId: 2023,
}]
]
答案 1 :(得分:0)
您无法使用内置的orderBy过滤器来订购此类对象。在我进入之前,你的对象看起来不正确。它应该是这样的:
$scope.Stepdetails =[{name: aa, RequestId: 2024},
{name: aa, RequestId: 2025},
{name: aa, RequestId: 2023}]
回到过滤,您需要构建自己的过滤器来对复杂对象进行排序。这个网站有一个非常好的即插即用的解决方案:
http://justinklemm.com/angularjs-filter-ordering-objects-ngrepeat/
答案 2 :(得分:0)
这似乎非常可行,但你的对象需要一些工作。 @nairys的对象是正确的:
$scope.Stepdetails = [
{ name: "aa", RequestId: 2024},
{ name: "aa", RequestId: 2025},
{ name: "aa", RequestId: 2023}
];
您需要做的只是传递RequestId
,因为name
是相同的(在您的示例中)。
考虑一下:
<div ng-controller="StepController">
<div ng-repeat="step in Stepdetails | orderBy: 'RequestId'">
{{ step.name }}, {{ step.RequestId}}
</div>
</div>
角度订单自动按升序排列。要按降序排序,只需在所需的媒体前添加-
即可。 orderBy: '-RequestId'
。
这是一个简单的订购解决方案,但它不适用于多维数组。但是,如果您只想订购一个简单的对象数组,那么这将有效。