Angular smart-table st-sort 无法正常工作 显示的错误顺序
Angular smart-table st-sort not working correctly wrong order displayed
我在使用智能 table 对数据进行排序时遇到问题,特别是在包含 土耳其语字符 时。生成了错误的顺序。
在我的控制器中:
$scope.rowCollection = [{
a: 'Çanakkale',
b: '3'
}, {
a: 'Ceyhan',
b: '2'
}, {
a: 'ĞĞĞĞĞ',
b: '4'
}, {
a: 'Ankara',
b: '1'
}, {
a: 'Zonguldak',
b: '5'
}];
$scope.displayedCollection = [].concat($scope.rowCollection);
和我的 html:
<tr ng-repeat="row in displayedCollection">
<td ng-repeat="col in columns">{{row[col]}}</td>
</tr>
这是原话:
http://plnkr.co/edit/JW4G1n2QszIqYjcAmlNz
我该如何解决?
感谢您的帮助
这是我为您找到的:
- 你的 plunk 中的 smart-table 版本缺少一些部分(第 164 行),这不允许你做你想做的事。我已经在我的 plunk
中将其更改为 2.1.8 版
- 在你的 table 上使用
st-set-sort="yourFilterName"
,你的 st-table
属性是:
<table st-table="displayedCollection" st-set-sort="turkishFilter" st-safe-src="rowCollection" class="table table-striped">
- 编写自定义过滤器函数:
angular.module('myApp', ['smart-table'])
.filter('turkishFilter', function(){
return function(items, field, isDescending){
//If you don't create a copy of the array,
//smart-table won't be able to restore the natural order state
var result = items.slice();
//Working only for string properties ATM!
result.sort(function(first, second){
//return first.a.localeCompare(second.a, 'tr');
//OR
return first[field].localeCompare(second[field], 'tr');
//localCompare() is supported only in IE11 and upwards
});
if (isDescending){
result.reverse();
}
return result;
};
})
工作笨拙 HERE
我在使用智能 table 对数据进行排序时遇到问题,特别是在包含 土耳其语字符 时。生成了错误的顺序。
在我的控制器中:
$scope.rowCollection = [{
a: 'Çanakkale',
b: '3'
}, {
a: 'Ceyhan',
b: '2'
}, {
a: 'ĞĞĞĞĞ',
b: '4'
}, {
a: 'Ankara',
b: '1'
}, {
a: 'Zonguldak',
b: '5'
}];
$scope.displayedCollection = [].concat($scope.rowCollection);
和我的 html:
<tr ng-repeat="row in displayedCollection">
<td ng-repeat="col in columns">{{row[col]}}</td>
</tr>
这是原话:
http://plnkr.co/edit/JW4G1n2QszIqYjcAmlNz
我该如何解决?
感谢您的帮助
这是我为您找到的:
- 你的 plunk 中的 smart-table 版本缺少一些部分(第 164 行),这不允许你做你想做的事。我已经在我的 plunk 中将其更改为 2.1.8 版
- 在你的 table 上使用
st-set-sort="yourFilterName"
,你的st-table
属性是:
<table st-table="displayedCollection" st-set-sort="turkishFilter" st-safe-src="rowCollection" class="table table-striped">
- 编写自定义过滤器函数:
angular.module('myApp', ['smart-table'])
.filter('turkishFilter', function(){
return function(items, field, isDescending){
//If you don't create a copy of the array,
//smart-table won't be able to restore the natural order state
var result = items.slice();
//Working only for string properties ATM!
result.sort(function(first, second){
//return first.a.localeCompare(second.a, 'tr');
//OR
return first[field].localeCompare(second[field], 'tr');
//localCompare() is supported only in IE11 and upwards
});
if (isDescending){
result.reverse();
}
return result;
};
})
工作笨拙 HERE