2

我的目标是编写一个 AngularJS 排序函数,它的行为类似于 MySQL 的“ORDER BY column1, column2”。意思是:如果“column1”相同,则按“column2”排序。

众所周知,只有一个标准的解决方案是:

$scope.myOrderFn = function (item) {
  return item.column1;
}

如何添加第二个标准?

4

1 回答 1

4

似乎排序功能更像是“按键提取功能”。因此,您不能只连接字符串值,因为这会破坏排序。但是,您可以像使用列名一样传递多个排序函数。它不在官方文档中,但来源很简单。

我认为您唯一的选择是像使用排序列一样传递两个排序函数:

模板

<div ng-repeat="item in items | orderBy:['column1','column2']">
  {{item.column1}}-{{item.column2}}
</div>

<div ng-repeat="item in items | orderBy:[sort1,sort2]">
  {{item.column1}}-{{item.column2}}
</div>

控制器

$scope.sort1 = function (item) {
  return item.column1;
}

$scope.sort2 = function (item) {
  return item.column2;
}
于 2013-09-21T07:11:53.867 回答