我在chrome和firefox浏览器中得到不同的数据排序结果. Firefox显示正确的一个.
HTML:
<table class="datatable">
<thead>
<tr>
<th width="5%" class="Rank">Rank <a ng-click="sort_by('Rank')"><i class="icon-sort" ng-show="pagedItems[currentPage].length > 1"></i></a></th>
<th width="10%" class="Interviews">Interviews <a ng-click="sort_by('Interviews')"><i class="icon-sort" ng-show="pagedItems[currentPage].length > 1"></i></a></th>
<th width="25%" class="Dealership">Dealership <a ng-click="sort_by('Dealership')"><i class="icon-sort" ng-show="pagedItems[currentPage].length > 1"></i></a></th>
<th width="15%" class="Satisfaction">Overall Satisfaction <a ng-click="sort_by('Satisfaction')"><i class="icon-sort" ng-show="pagedItems[currentPage].length > 1"></i></a></th>
<th width="15%" class="Loyalty">Loyalty <a ng-click="sort_by('Loyalty')"><i class="icon-sort" ng-show="pagedItems[currentPage].length > 1"></i></a></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in pagedItems[currentPage] | orderBy:sortingOrder:reverse">
<td>{{item.Rank}} - {{item.$$hashKey}}</td>
<td>{{item.Interviews}}</td>
<td>{{item.Dealership}}</td>
<td>{{item.Satisfaction | number:1}}</td>
<td>{{item.Loyalty}}</td>
</tr>
</tbody>
我最初用Rank排序:
角度控制器代码:
$scope.sortingOrder = sortingOrder;
$scope.reverse = false;
Firefox中的结果:Rank列显示具有Hashkey值的Rank
Chrome结果:排名列显示带有Hashkey值的排名
我在这里用Rank排序.具有相同排名的数据在其$$哈希键之后排序. Firefox提供$$hashkey以获取数据. Chrome在第二条记录中提供哈希密钥的位置.
我无法理解为什么会这样.有什么方法我可以避免.
提前致谢.
最佳答案 我在Google Chrome中遇到了同样的问题.
解决方法是在页面加载时设置初始排序字段.
我之前没有这样做过:
$scope.items = {[$data]}
$scope.mySortFunction = function(item) {
if(isNaN(item[$scope.sortExpression]))
return item[$scope.sortExpression];
return parseInt(item[$scope.sortExpression]);
}
我把上面改为:
$scope.items = {[$data]}
//we want the 1st load to be sorted by sort_code
$scope.sortExpression = 'sort_code';
$scope.mySortFunction = function(item) {
if(isNaN(item[$scope.sortExpression]))
return item[$scope.sortExpression];
return parseInt(item[$scope.sortExpression]);
}