【问题标题】:Sort ng-repeat tags by custom list?按自定义列表对 ng-repeat 标签进行排序?
【发布时间】:2017-07-06 14:37:41
【问题描述】:

我的 ng-repeat 显示大数据,在 groupBy 之后分成 5 个 div

<div ng-repeat=" (key, value) in gamesList | groupBy: 'id' ">...</div>

ID值为

{ '1' , '2' , '3' , '4' , '5' } 

结果它从 min 到 max 排序。

如何使用我的自定义规则订购它,如下所示:

{'5' , '2' , '4' , '1' , '3' }

【问题讨论】:

  • 自定义规则的逻辑是什么
  • { '1' , '2' , '3' , '4' , '5' } - 那是什么样的结构?
  • 您可以根据自己的逻辑创建自己的自定义过滤器并使用它。
  • 您可以使用sort() 函数来实现您的目标。
  • @Sajeetharan ,它只是默认的

标签: angularjs angularjs-ng-repeat angularjs-filter angularjs-orderby


【解决方案1】:

您可以使用sort() 函数而不是使用过滤器对数据进行排序。 你必须像这样定义你的规则:

var myRule = {'5':1,'2':2,'4':3,'1':4,'3':5}

然后您必须对数据应用自定义规则。

scope.gameList=scope.gameList.sort(function(a,b){
  return myRule[a.id]>myRule[b.id];
});

您可以通过使用自定义过滤器来做到这一点,如下所示:

myApp.filter('myFilter', function() {
 return function(input) {
   var output;
   var myRule = {'5':1,'2':2,'4':3,'1':4,'3':5};

   output = input.sort(function(a, b) {  
    return myRule[a.id]>myRule[b.id];
   });

   return output;
  }
});

您可以像这样应用您的自定义过滤器:

<div ng-repeat="d in data | myFilter">

Here 是 plunker 上的一个示例。 希望对您有所帮助!

【讨论】:

  • 没有帮助,这是什么 myRule = {'5':1,'2':2,'4':3,'1':4,'3':5} ?它是我的 orderList 吗?
  • 你想通过自定义规则对数据进行排序,所以必须有一个条件。我只是在 ids 上设置了一个规则。你可以有不同的标准。我假设我有 5 条 id 为 1 到 5 的记录,myRule 说 id my id=5 该记录应该是第一条记录,依此类推。
  • 如果有办法使用它像 | orderBy: myRule ?
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 2019-06-09
  • 2019-05-28
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多