OrderBy在Chrome中的排序方式与其他浏览器不同

时间:2016-05-12 14:31:17

标签: javascript angularjs google-chrome sorting

我注意到Chrome中的orderBy没有像在其他浏览器中那样排序。

我正在为Angular 1.3中的一个项目写作。

Chrome排序: Chrome

IE 10排序: enter image description here

没有关于特定浏览器的特殊逻辑,两个阵列完全相同。

明确定义谓词:

$scope.predicate = 'style';
$scope.reverse = true;

我的ng-repeat看起来像这样:

<tr ng-repeat="line in model.resultList | orderBy:predicate:reverse">

我的代码没什么特别或不同。但是,&#39;尺寸&#39;是字符串(例如尺寸:&#39; 8 - &#39;,...,尺寸:&#39; 6&#39;,...)。为什么Chrome上的排序与其他浏览器完全不同?

我的所有结果都是从后端按照样式#的组排序,然后是升序大小。在Angular上设置主要排序时,在这种情况下为“样式”,Chrome会混合已经排序的大小。请参阅下面的Plnk(在Chrome和IE / FireFox中打开以查看差异)

http://plnkr.co/edit/6TO8pZZ8jZ8Tytw6wHpQ?p=preview

1 个答案:

答案 0 :(得分:5)

没错。由于您要按其他字段进行排序,因此可以以任何方式调整大小。 orderBy依赖于浏览器(source)的buit-in排序功能。浏览器实现可能不同。排序不应该稳定(MDNES2015 Standard section)。

如果要实现一致的行为,请使用多个字段进行排序。像

orderBy:[predicate, 'size']:reverse