checkbox 不限 与其他条件不同时 选中 处理

html

<div class="tm-dz-redio tm-deco-redio tm-margin-bottom-none" ng-repeat="item in searchGfz_xf_arealist">

     <input id="search_recommendareazoom_${{item.value}}" type="checkbox" name="search_recommendareazoom" ng-change="checkrecommendareazoom(neoparams.recommendareazoom[$index])" ng-true-value="'{{item.value || 'all'}}'" ng-false-value="" ng-model="neoparams.recommendareazoom[$index]">

       <label for="search_recommendareazoom_${{item.value}}" class="tm-lh24">{{item.name}}</label>

 </div>

js

这个是区域的数组

$scope.searchGfz_xf_arealist = [
            {value: '', name: '不限'},
            {value: '1', name: '江干'},
            {value: '2', name: '拱墅'},
            {value: '3', name: '滨江'},
            {value: '4', name: '西湖'},
            {value: '5', name: '上城'},
            {value: '6', name: '下城'},
            {value: '7', name: '余杭'},
            {value: '8', name: '萧山'},
            {value: '9', name: '下沙'},
            {value: '10', name: '之江'},
            {value: '11', name: '大江东'}
        ];

开始先设置一个值给不限这个 我设置的是 all

$scope.neoparams = {

                recommendareazoom: ['all']

 }

$scope.checkrecommendareazoom = function (checkzoom) {

            if(checkzoom =='all'){

                $scope.neoparams.recommendareazoom = ['all'];

            }else{

                if(isInArray($scope.neoparams.recommendareazoom,'all')){

                    for (i in $scope.neoparams.recommendareazoom) {

                        if ($scope.neoparams.recommendareazoom[i] == 'all') {

                            $scope.neoparams.recommendareazoom[i] ='';

                        }

                    }

                }

            }

        }

这个方法判断某个值是否在这个数组里

function isInArray(arr,value){

            for(var i = 0; i < arr.length; i++){

                if(value === arr[i]){

                    return true;

                }

            }

            return false;

        }

最后想了下还是优化下吧 主要是js

$scope.checkrecommendareazoom = function (checkzoom) {

            if(checkzoom =='all'){

                $scope.neoparams.recommendareazoom = ['all'];

            }else{

                isInArray($scope.neoparams.recommendareazoom,'all','recommendareazoom');

            }

        }

function isInArray(arr,value,type){

            for(var i = 0; i < arr.length; i++){

                if(value === arr[i]){

                    if(type === 'recommendareazoom'){

                        $scope.neoparams.recommendareazoom[i] ='';

                    }

                    return true;

                }

            }

            return false;

        }

最后再改动下 因为我的不限值是all默认在数组里是第0位 我这个也不用写循环了

function isInArray(arr,value,type){

            if(value === arr[0]){

                if(type === 'recommendareazoom'){

                    $scope.neoparams.recommendareazoom[0] ='';

                }               

             return true;

            }

            return false;

        }测试

猜你喜欢

转载自blog.csdn.net/u012938852/article/details/83572925
今日推荐