AngularJS自定义orderBy来自同一个变量

时间:2015-01-20 17:52:29

标签: javascript jquery angularjs

在我看来,我这样做:

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

some_key变量只有3种类型的字符串输出:&#34;不安全&#34;,&#34;提升&#34;和&#34;追踪&#34;。我想按此顺序订购商品的输出:首先是所有不安全的商品,然后是&#34;提升&#34;最后&#34;追踪&#34; ......我不能通过一个简单的顺序来做这个过滤器...如何实现这个目标?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

制作自定义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
}

答案 1 :(得分:1)

使用自定义过滤器

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

演示
相关问题