cheked复选框返回值的时候选中

html
<div ng-repeat="item in businessType">
		<input type="checkbox" ng-class="{namecheck: item.name=='null'}" ng-model="item.checked" ng-change="selectOne()">

</div>
js
  1.单选选中的时候
	$scope.checkedList = []
	$scope.selectOne = function () {
    	console.log($scope.businessType)
    	angular.forEach($scope.businessType , function (i) {
      	console.log(i.checked)
      	var index = $scope.checkedList.indexOf(i.code);
      	if(i.checked && index === -1) {
        	$scope.checkedList.push(i.code);
      	} else if (!i.checked && index !== -1){
        	$scope.checkedList.splice(index, 1);
      	};
    	})
    	console.log($scope.checkedList);
  	}
  2.ajax返回数据的时候
  	for(let i = 0;i < data.data[0].businessTypes.length;i++){//这一层循环是接口返回的数据
       $scope.checkedList.push(data.data[0].businessTypes[i].code)//如果有code的时候就把code压入数组中
       for(let k = 0;k < $scope.businessType.length;k++){//这一层循环是原始数据
       if($scope.businessType[k].code === data.data[0].businessTypes[i].code){//让原始数据与返回数据的code做对比如果相等就是选中的状态
            $scope.businessType[k].checked = true;
             break;
        }
      }
  	}	
总结
	刚开始做的时候我是用原始数据做外层循环的结果只有选中数组的最后一个是选中的状态,后来找到原因是因为外层循环的数据比内层循环的数据多,如果选中的只有2个,外层循环5个,外层循环能循环5次内层循环只能循环2次,所以多的3个还会和他做对比又会重新赋值。因此需要返回的数据放在外层和原始数据做对比,他有2个循环2此和原始数据一次做对比,所以这样就好啦
	每一次遇到的bug都要用心去做总结避免下次再犯

转载于:https://my.oschina.net/pingheyongfeng/blog/3059031

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值