ng-repeat按字符串值排序

时间:2018-09-10 14:53:01

标签: angularjs angularjs-ng-repeat

我想知道是否可以通过基于字符串的列表进行排序,例如

我希望所有Bear在基于item.type的ng-repeat中排在首位。

数据:

$scope.Reindeers = [{
    "name": "Vixen",
    "type": "Bear"
},
{
    "name": "Prancer",
    "type": "Dog"
},
{
    "name": "Dancer",
    "type": "Cat"
},
{
    "name": "Rudolph",
    "type": "Bear"
}]

AngularJS例如

<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type == Bear'"></div>

3 个答案:

答案 0 :(得分:2)

acceptsFirstResponder的参数可以是一个函数:https://docs.angularjs.org/api/ng/filter/orderBy#orderBy-arguments

编写一个函数,该函数返回用于排序的值。最高优先级应返回最低值:

false

然后将其用作您的orderBy函数:

$scope.orderByBears = function(item) {
  switch(item.type) {
    case "Bear":
      return -10;
    /*case "Dog":
      return -5;*/
    default:
      return 0;
  }
}

https://jsfiddle.net/jnokyfx9/2/

答案 1 :(得分:0)

最简单的解决方案是仅使用默认的字母顺序。

因此,由于bear以b开头,因此只需写:

 <div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type'">{{Deer}}</div>

请参阅:https://jsfiddle.net/nfje5qo2/6/

答案 2 :(得分:0)

由于数组以key:value方式存储。这很容易排序。您无需编写任何其他方法或函数。只需将Angular术语中称为filter的管道放入您的HTML中,如下所示。

<div class="weird-reindeers" ng-repeat="Deer in Reindeers | orderBy: 'type'">{{Deer}}</div>