javascript - 修复 Angular 排序

标签 javascript sorting angularjs

Angular在“Zimbabwe”之后对“Åland Islands”进行排序。我想以全局方式解决这个问题。而不是创建自定义排序函数并在每个 orderBy 中指定它过滤器,我想以某种方式全局修补默认排序功能。这可能吗?

首先使用以下函数规范化两个字符串,问题就解决了:

function norm(str) {
  str = str.toLowerCase();
  str = str.replace(/\\s/g, "");
  str = str.replace(/[àáâãäå]/g, "a");
  str = str.replace(/æ/g, "ae");
  str = str.replace(/ç/g, "c");
  str = str.replace(/[èéêë]/g, "e");
  str = str.replace(/[ìíîï]/g, "i");
  str = str.replace(/ñ/g, "n");
  str = str.replace(/[òóôõö]/g, "o");
  str = str.replace(/œ/g, "oe");
  str = str.replace(/[ùúûü]/g, "u");
  str = str.replace(/[ýÿ]/g, "y");
  str = str.replace(/\\W/g, "");
  return str;
}

我希望有一种方法可以在 Angular 中完成一次,再也不用担心了。

最佳答案

你可以自己规范化它:

var normalize = function(str) {
  return str.toLowerCase().
             replace(/[àáâãäå]/g, "a");
             // ...
};

app.controller('MainCtrl', function($scope) {
  $scope.items = [
    {name: 'Åland Islands'},
    // ...
  ];

  $scope.normalizedName = function(item) {
    return normalize(item.name);
  };
});

然后在html中使用:

<li ng-repeat="item in items | orderBy:normalizedName">{{item.name}}</li>

这是 plunker 上的整个示例.

关于javascript - 修复 Angular 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493168/

相关文章:

javascript - 克隆对象数组失败

javascript - 获取具有大量参数的 RESTful 列表

javascript - 更改 ng 包含或定义默认 ui View

javascript - javascript中不同对象数组的一种排序函数

python - Sqlalchemy 以相同的顺序获得结果

javascript - 服务在 AngularJS 的数组中返回未定义

angularjs - AngularDart: “static _nop(e) => e;”是什么意思

javascript - Jquery 获取表行计数忽略类的行

javascript - 使用 highcharts.js 在每个 xAxis 类别标签上显示自定义图标图像 [html]

php - 多维数组按值排序,同时将其转换为整数