angularJS 数组更新时重新排序之解决方案一:这个坑,绕开吧,不跳了……

今天产品大人发现了一bug,图表数据和数据库总是对不上,原因是当前端更新数组时,angularJS默认对数组进行了排序。

1 // 点击事件:input复选框
2     $scope.fnClickUpdateAreas = function ($event,areaCode,areaName) {
3         if ($event.target.checked) {
4             $scope.areaCodes.push(areaCode);
5             $scope.areaNames.push(areaName);
6         }
7     }
查看代码

当再次更新areaCodes和areaNames时,发现areaCodes自动排序了,和areaNames无法一一对应了,原因很简单,areaCodes是数字,而areaNames是文字。一直在找怎么阻止angularJS自动排序的方案,结果没找到,结果只能用以下办法解决了:

 1 // 点击事件:input复选框
 2     $scope.fnClickUpdateAreas = function ($event,areaCode,areaName) {
 3         // 更新service中的地区代码数组
 4         if ($event.target.checked) {
 5             $scope.areas.push(
 6                 {
 7                     'name': areaName,
 8                     'code': areaCode
 9                 }
10             );
11         }
12 
13         service.areaCodes = [];
14         service.areaNames = [];
15         for (var i = 0; i < $scope.areas.length; i++) {
16             service.areaCodes.push($scope.areas[i].code);
17              service.areaNames.push($scope.areas[i].name);
18 
19         }
20     }
查看代码

 

posted on 2016-10-27 15:55  放羊的星星bky  阅读(1480)  评论(0编辑  收藏  举报

导航