来自同一变量的 AngularJS 自定义订单

AngularJS custom orderBy from the same variable

本文关键字:AngularJS 自定义 变量      更新时间:2023-09-26

在我看来,我正在这样做:

<div ng-repeat="item in items">
  {{item.some_key}}
</div>

some_key变量只有 3 种类型的字符串输出:"不安全"、"提升"和"跟踪"。我想按此顺序对项目的输出进行排序:首先是所有不安全的项目,然后是"提升",最后是"跟踪"......我不能按简单的顺序通过过滤器执行此操作...如何实现这一点?

提前感谢您的帮助!

创建自定义orderBy

<div ng-repeat="item in items | orderBy: statusEvent">
    {{item.some_key}}
</div>
$scope.statusEvent = function(item) {
    if (item.some_key == "unsafe") return 0
    else if (item.some_key == "elevated") return 1
    else if (item.some_key == "trace") return 2
    else return 3
}

使用自定义过滤器

var orders = {
  unsafe:0,
  elevated:1,
  trace:2
}
$scope.someKeyOrder = function(item){
  return orders[item.some_key];
}

并使用它

ng-repeat="item in items | orderBy: someKeyOrder"

http://plnkr.co/edit/4Tjsc8?p=preview 演示