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/