【问题标题】:order by combination of two fields in angular按角度中两个字段的组合排序
【发布时间】:2017-01-26 23:54:05
【问题描述】:

我知道可以用两列分别按角度对表格进行排序,即首先按名称排序,然后按家族排序。

https://plnkr.co/edit/bJIIlmGLyGWsxD5AQti0

var friends = [
  {name: 'a',   family: 'z',  age: 10},
  {name: 'z',   family: 'b',  age: 19},
  {name: 'c',   family: 'z',  age: 21},
  {name: 'z',   family: 'd',  age: 35},
  {name: 'z',  family: 'e',  age: 29}
];

$scope.propertyName = 'age';
$scope.reverse = true;
$scope.friends = orderBy(friends, $scope.propertyName, $scope.reverse);

$scope.sortBy = function(propertyName) {
  $scope.reverse = (propertyName !== null && $scope.propertyName === propertyName)
      ? !$scope.reverse : false;
  $scope.propertyName = propertyName;
  $scope.friends = orderBy(friends, ['name','family'], $scope.reverse);
};
}]);
})(window.angular);

我想知道是否可以通过组合这两个字段来对它们进行排序,例如按“姓名”和“家庭”的字母顺序排列,所以它显示为“a,b,c,d,e”?

【问题讨论】:

标签: angularjs sorting angularjs-orderby


【解决方案1】:
<div ng-repeat="student in students | orderBy:['name','family']">
    {{student.name}}-{{student.family}}
</div>

【讨论】:

  • 在这种情况下,它是按姓名排序,然后是家庭,而不是根据这两个字段的组合对它们进行评分。所以我喜欢实现“a b c d e f”而不是“a c b d”
【解决方案2】:

您可以通过这种方式简单地将Array 传递给角度orderBy 过滤器:

ng-repeat="friend in friends | orderBy:['name', 'family']"

更新:在 OP 更改问题后,我要求您更好地说明请求的排序功能,因为从问题中(对我来说)不是很清楚......

【讨论】:

  • 我希望通过组合两个字段来对订单进行评分,因此它将如下所示 {name: 'a', family: 'z', age: 10}, {name: 'z' ,家庭:'b',年龄:19},{name:'c',家庭:'z',年龄:21},{name:'z',家庭:'d',年龄:35},{name :'z',家庭:'e',年龄:29}
  • 我不是要一个例子,而是要一个定义...... :-)
猜你喜欢
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
相关资源
最近更新 更多