• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

凉梁凉糕

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

利用vue写一个复选框的组件


HTML <multicheck :source=tlist :busValue='objInfo.tt' @getTt="getTtInfo"></multicheck> data tlist:[ {value:'A',label:'1'}, {value:'B',label:'2'}, {value:'C',label:'3'}, {value:'D',label:'4'}, {value:'E',label:'5'} ] methods getTtInfo:function(par){ this.objInfo.tt= par; }

 

子组件:

<template>
    <div id="multicheck">
      <span v-for='item in source' class="check-item">
          <input ref='tt' type="checkbox" :value="item.value" name="tt" @click='updateValue($event.target.value)'>{{item.label}}
      </span>
    </div>
</template>
<style scoped type="text/css">
    .check-item{
        display:inline-block;
        padding-right:14px;
        font-size:14px;
    }
</style>
<script>
  export default{
      name:'multicheck',
      props:{
          source:{
              type:Array
          },
          busValue:{
              type:String
          }
      },
      data(){
        return{
            ttVal :this.busValue
        }
      },
      computed:{
      },
      methods:{
        busToArr(str){
           if(str!=''){
                if(str.indexOf(',')==-1){
                    return [str];
                }else{
                    return str.split(',');
                }
            }else{
                return [];
            }
        },
        busToStr(arr){
           return arr.join(',');
        },
        isInAarrayIndex(arr,e){
            var haveAindex={
                isHave:false,
                index:-1
            };
            if(arr.length==0){
                haveAindex.isHave = false;
                haveAindex.index = -1;
                return JSON.stringify(haveAindex);
            }else{
                for(var i=0;i<arr.length;i++){
                    if(arr[i]==e){
                        haveAindex.isHave = true;
                        haveAindex.index = i;
                        break;
                    }
                }
                return JSON.stringify(haveAindex);
            }
        },
        updateValue(value){
            var busCurtArr = this.busToArr(this.ttVal);
            var haveIndex = JSON.parse(this.isInAarrayIndex(busCurtArr,value))
            if(haveIndex.isHave){
                busCurtArr.splice(haveIndex.index,1);
            }else{
                busCurtArr.push(value);
            }
            busCurtArr.sort();
            this.ttVal = this.busToStr(busCurtArr);
            this.$emit('getTt', this.busToStr(busCurtArr));
        }
      },
      mounted:function(){
          if(this.ttVal!=''){
              var busArr = this.busToArr(this.ttVal);
              for(var i =0 ;i<busArr.length;i++){
                  this.$refs.tt.forEach(function(item){
                     if(item.value == busArr[i]){
                         item.checked = true;
                     }
                  });
              }
          }
          
          
      }

  }
</script>

  

 

posted on 2018-04-10 18:37  凉梁凉糕  阅读(3413)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3