我有一个包含对象数组的 JSON 提要。每个数组都有一个名为“状态”的字段,其中包含以下值 -是、否、不是现在、从不 我想为它分配一个订单号
所以
Yes(1) ,
Not Now(2),
No(3),
Never(4)
现在,每当我对包含此状态的表进行排序时。它必须按 orderNo 排序。状态,而不是按字母顺序。
我不需要完整的答案,只需指向正确的方向就足够了。
我有一个包含对象数组的 JSON 提要。每个数组都有一个名为“状态”的字段,其中包含以下值 -是、否、不是现在、从不 我想为它分配一个订单号
所以
Yes(1) ,
Not Now(2),
No(3),
Never(4)
现在,每当我对包含此状态的表进行排序时。它必须按 orderNo 排序。状态,而不是按字母顺序。
我不需要完整的答案,只需指向正确的方向就足够了。
您可以添加一个orderNo
对每个对象调用的字段,并在从 API 检索值后使用您定义的顺序填充此值。
[
{
"status": "Yes",
"orderNo": 1,
....
},
{
"status": "Never",
"orderNo": 4,
....
}
]
$http
您可以在or服务的回调中处理它,$resource
如下所示:
angular.forEach(objects, function(o){
if(o.status === 'Yes') o.orderNo = 1;
else if(o.status === 'Not Now') o.orderNo = 2;
else if(o.status === 'No') o.orderNo = 3;
else if(o.status === 'Never') o.orderNo = 4;
});
如果您无法修复后端,那么您需要做的就是编写一个排序函数供 angular 使用。在你的情况下,在你的角度控制器中,写
$scope.myCustomSort = function(elem)
{
switch(elem.status)
{
case "Yes": return 1;
case "Not now": return 2;
case "No": return 3;
case "Never": return 4;
default: return 10;
}
}
然后,在您的 HTML 中,将其作为orderBy
函数传递。
<myThing ng-repeat="item in items | orderBy:myCustomSort"></myThing>
只要该myCustomSort
方法可用于控制您的任何人的范围ng-repeat
,它将使用您的自定义排序方法。
我会将您链接到文档,尽管除非您阅读整篇文章,否则您可以做到这一点并不明显。但是您可以看到它orderBy
接受一个表达式,它可以是您自己的函数(或函数数组),您可以在其中返回您自己的自定义值,该值将使用<
and进行排序>
。