我注意到Chrome中的orderBy没有像在其他浏览器中那样排序。
我正在为Angular 1.3中的一个项目写作。
没有关于特定浏览器的特殊逻辑,两个阵列完全相同。
明确定义谓词:
$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中打开以查看差异)
答案 0 :(得分:5)
没错。由于您要按其他字段进行排序,因此可以以任何方式调整大小。 orderBy
依赖于浏览器(source)的buit-in排序功能。浏览器实现可能不同。排序不应该稳定(MDN,ES2015 Standard section)。
如果要实现一致的行为,请使用多个字段进行排序。像
orderBy:[predicate, 'size']:reverse