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

我该如何解决?

感谢您的帮助

这是我为您找到的:

  1. 你的 plunk 中的 smart-table 版本缺少一些部分(第 164 行),这不允许你做你想做的事。我已经在我的 plunk
  2. 中将其更改为 2.1.8 版
  3. 在你的 table 上使用 st-set-sort="yourFilterName",你的 st-table 属性是:

<table st-table="displayedCollection" st-set-sort="turkishFilter" st-safe-src="rowCollection" class="table table-striped">

  1. 编写自定义过滤器函数:

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