element-ui :Cascader级联选择器相关问题

1.Cascader级联选择器高度问题

  • 问题描述
    element新版本级联选择器当循环数据过多时,下拉框很长,会铺满整个屏幕。

  • 决解方法
    1. 在全局css中设置

    这种方法会固定所有级联选择器的高度
    使用场景:1.所有页面级联选择器高度都一样 2.只有一个级联选择器

    .el-cascader-menu{
       height: 400px;
     }
    

    2、在使用级联选择器的页面单独设置

    <style>
    .el-cascader-panel{
      height: 400px!important
    }
    </style>
    

2.Cascader 选择任意一级选项组件去掉前面圆圈

  • 问题描述
    element新版本级联选择器当change-on-select=true时,前面会出现单选框

  • 解决方法

    /* 级联选择器el-cascader,通过点击label文字部分选中 */
    .el-cascader-panel .el-radio {
      width: 100%;
      height: 100%;
      z-index: 10;
      position: absolute;
      top: 10px;
      right: -10px;
    }
    	
    /* 隐藏单选框,不隐藏就不用设置 */
    .el-cascader-panel .el-radio__input {
      visibility: hidden;
    }
    
    .el-cascader-panel .el-cascader-node__postfix {
      top: 10px;
    }
    

3.Cascader 去掉单选框后点击文字选中并关闭

 <el-cascader ref="myCascader"
              @change="parentCateChange"
              expandTrigger="hover"
              change-on-select></el-cascader>

  parentCateChange () {
        // 选择之后将下拉框关闭
      	/*   点击最后一级才关闭下拉框
    	 let node = this.$refs.myCascader.getCheckedNodes()[0];
      	 // 判断是否是最后一级
        !node.hasChildren&&
        this.$refs.myCascader.toggleDropDownVisible(); 
       	 */
        // 点击哪一级都关闭
       this.$refs.myCascader.toggleDropDownVisible()
    }

4. 2 、3问题整合,二次封装Cascader

  • 实现的效果
    隐藏单选框,点击文字选中并关闭

    // myCascader.vue
    
    <template>
      <el-cascader
        	ref="myCascader"
        	expandTrigger="hover"
       	    :options="cascaderOptions"
      	    :props="cascaderProps"
            @change="cascaderChange"
    ></el-cascader>
    </template>
    
    <script>
    	export default {
     	   props: {
      	 	 cascaderOptions: {
      		      type: Array, // 数据data
     		   },
     		   cascaderProps: {
      		      type: Object,  //自定义类型参数
    		    }
    	    },
    	   methods:{
    		    cascaderChange(){
    		     // 选择之后将下拉框关闭
      	 	    /*   点击最后一级才关闭下拉框
    	  	      let node = this.$refs.myCascader.getCheckedNodes()[0];
      			  // 判断是否是最后一级
        		    !node.hasChildren&&
       	 	    this.$refs.myCascader.toggleDropDownVisible(); 
       	 	     */
       	 	     // 点击哪一级都关闭
       	 	      this.$refs.myCascader.toggleDropDownVisible()
       	 	     
     		   }
    	   }
    	};
    </script>
    
    <style>
    .el-cascader-panel .el-radio {
      width: 100%;
      height: 100%;
      z-index: 10;
      position: absolute;
      top: 10px;
      right: -10px;
    }
    	
    /* 隐藏单选框,不隐藏就不用设置 */
    .el-cascader-panel .el-radio__input {
      visibility: hidden;
    }
    
    .el-cascader-panel .el-cascader-node__postfix {
      top: 10px;
    }
    </style>
    
    
  • 引用

    //引用
       <my-cascader :cascaderOptions="data" :cascaderProps="props"></my-cascader>
       /*data为数据源
       props为自定义参数*/
       props:{
     	     label: "label", 
       	     value: "value",
             children: "children",
      	   //以上3 默认情况可以不写
       		 checkStrictly: true, //这个必须有,取消上下级联动
    },
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值