今天产品大人发现了一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 }