需求:桌子上有一排灯,点哪个亮哪个,但是要求每次只能点亮一盏。 如果不使用排他思想,操作过程如下: 
  第一次打开一盏灯,记为 A,记录下来。 第二次打开灯之前,先去找记录,得知刚才打开的是 A,关掉 A。 第二次打开一盏灯,记为 B,记录下来。 第三次打开灯之前,先去找记录,得知刚才打开的是 B,关掉 B。 … 上述方法需要频繁操作存储,并且产生了很多变量。  使用排他思想的话,操作过程如下: 
  第一次打开一盏灯。 第二次打开灯之前,不管之前打开的是谁,让所有的灯都执行关闭操作。 第二次打开一盏灯。 第三次打开灯之前,不管之前打开的是谁,让所有的灯都执行关闭操作。 … 上述方法未产生新变量,也没有操作存储。  < template> < div> < divclass = " redioBlock" > < divclass = " sinRadio" v-for = " (item, index) in redioArr" :key = " index" @click = " chooseOnlyOne(index)" > < divclass = " value" :class = " item.value ? 'choosed' : ''" > </ div> < divclass = " label" :class = " item.value ? 'choosed' : ''" > </ div> </ div> </ div> </ div> </ template> < script> 
export  default  { 
    data ( )  { 
        return  { 
            redioArr :  [ 
                {  value :  false ,  label :  "第一个值"  } , 
                {  value :  false ,  label :  "第二个值"  } , 
                {  value :  false ,  label :  "第三个值"  } , 
                {  value :  false ,  label :  "第四个值"  } , 
            ] , 
        } ; 
    } , 
    watch :  { } , 
    mounted ( )  { } , 
    methods :  { 
        chooseOnlyOne ( chooseIndex )  { 
        	
            this . redioArr. forEach ( ( item,  index )  =>  { 
                
                item. value =  false ; 
                if  ( index ==  chooseIndex)  { 
                    
                    item. value =  true ; 
                } 
            } ) ; 
        } , 
    } , 
} ; 
 </ script> < stylelang = " less" scoped > 
.sinRadio  { 
    overflow :  hidden; 
    line-height :  40px; 
    .value  { 
        width :  20px; 
        height :  20px; 
        float :  left; 
        border :  1px solid #ccc; 
        border-radius :  50%; 
        margin-right :  10px; 
        margin-top :  10px; 
        &.choosed  { 
            background :  #87add8; 
            border :  1px solid #87add8; 
        } 
    } 
    .label  { 
        float :  left; 
        &.choosed  { 
            font-weight :  bold; 
        } 
    } 
} 
 </ style> 
 
低配版 radio 组合(利用了 vue 的特性,另一种实现方式,与本文思想无关) < template> < div> < divclass = " redioBlock" > < divclass = " sinRadio" v-for = " (item, index) in redioArr" :key = " index" @click = " chooseOnlyOne(index)" > < divclass = " value" :class = " index == activeIndex ? 'choosed' : ''" > </ div> < divclass = " label" :class = " index == activeIndex ? 'choosed' : ''" > </ div> </ div> </ div> </ div> </ template> < script> 
export  default  { 
    data ( )  { 
        return  { 
            
            activeIndex :  null , 
            redioArr :  [ 
                {  label :  "第一个值"  } , 
                {  label :  "第二个值"  } , 
                {  label :  "第三个值"  } , 
                {  label :  "第四个值"  } , 
            ] , 
        } ; 
    } , 
    watch :  { } , 
    mounted ( )  { } , 
    methods :  { 
        chooseOnlyOne ( chooseIndex )  { 
            this . activeIndex =  chooseIndex; 
        } , 
    } , 
} ; 
 </ script> 关键信息脱敏(点击星号,只展示当前脱敏信息,其他内容仍是脱敏状态) < template> < div> < divclass = " tableBlock" > < el-tableclass = " myTable" :data = " tableData" style = " width :  100%" :key = " num" > < el-table-columnprop = " name" label = " 姓名" width = " 200" > </ el-table-column> < el-table-columnprop = " phone" label = " 电话" width = " 200" > < templateslot-scope = " scope" > < div@click = " chooseOnlyOne(scope.$index, 'phone')" > </ div> </ template> </ el-table-column> < el-table-columnprop = " idCard" label = " 证件号" > < templateslot-scope = " scope" > < div@click = " chooseOnlyOne(scope.$index, 'idCard')" > </ div> </ template> </ el-table-column> </ el-table> </ div> </ div> </ template> < script> 
export  default  { 
    data ( )  { 
        return  { 
            
            activeIndex :  null , 
            tableData :  [ 
                { 
                    name :  "张三" , 
                    phone :  "15222222222" , 
                    idCard :  "100000000000000000" , 
                } , 
                { 
                    name :  "李四" , 
                    phone :  "15222222222" , 
                    idCard :  "100000000000000000" , 
                } , 
                { 
                    name :  "王五" , 
                    phone :  "15222222222" , 
                    idCard :  "100000000000000000" , 
                } , 
                { 
                    name :  "赵六" , 
                    phone :  "15222222222" , 
                    idCard :  "100000000000000000" , 
                } , 
            ] , 
            num :  0 , 
        } ; 
    } , 
    watch :  { } , 
    mounted ( )  { 
        
        this . tableData. forEach ( ( item,  index )  =>  { 
            item. phoneHidden =  "***" ; 
            item. idCardHidden =  "******" ; 
        } ) ; 
    } , 
    methods :  { 
        chooseOnlyOne ( chooseIndex,  type )  { 
            
            this . tableData. forEach ( ( item,  index )  =>  { 
                item. phoneHidden =  "***" ; 
                item. idCardHidden =  "******" ; 
            } ) ; 
            
            this . tableData. forEach ( ( item,  index )  =>  { 
                if  ( index ==  chooseIndex)  { 
                    if  ( type ==  "phone" )  { 
                        
                        item. phoneHidden =  item. phone; 
                    }  else  { 
                        
                        item. idCardHidden =  item. idCard; 
                    } 
                } 
            } ) ; 
            
            this . num +=  1 ; 
        } , 
    } , 
} ; 
 </ script>