常见问题

级联禁用:选择任意一级选项能查看但是无法选中

首先设置设置 checkStrictly: true 让任意一级可以选中,然后隐藏掉radio标签。

// 设置popper-class的值为cascaderParent
<el-cascader
  v-model="form.parentUuid"
  :options="optionsData"
   :props="{ expandTrigger: 'hover', checkStrictly: true}"
  placeholder="请选择"
  popper-class="cascaderParent"
></el-cascader>
 
// css 样式
<style>
/* 第一列不可被选择 *、*
/* 注意:先找我们指定的类名为cascaderParent的面板 */
.cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio {
  display: none;
}
 
/* 指定的第n列不可被选择 */ 
.cascaderParent .el-cascader-panel .el-scrollbar:nth-child(n+1) .el-radio {
  display: none;
}
</style>

选择任意一级的数据,并隐藏 radio 标签

第一种方法:实现思路是隐藏radio标签, 点击文字时自动选中radio标签。首先,需要设置 checkStrictly: true 让任意一级可以选中,然后节点展开的时候为文字 el-cascader-node__label 添加点击事件,自动选中radio标签。

// 设置popper-class的值为cascaderParent
<el-cascader
  v-model="form.parentUuid"
  :options="optionsData"
   :props="{ expandTrigger: 'hover', checkStrictly: true}"
  placeholder="请选择"
  popper-class="cascaderParent"
  @expand-change="onExpandChange" />
//js
methods:{
		async onExpandChange() {
		  await this.$nextTick(); // 需要等页面完全渲染好之后再进行事件绑定
		  document.querySelectorAll('.el-cascader-node__label').forEach(el => {
		    el.onclick = function () {
		      if (this.previousElementSibling) this.previousElementSibling.click()
> 		    }
		  })
		}
    }
   },
// css 样式
<style>
/* 指定的第n列不可被选择 */
.cascaderParent .el-cascader-panel .el-scrollbar:nth-child(n+1) .el-radio {
  display: none;
}
</style>

第二种方法:纯css实现,使用css将小圆圈变透明然后覆盖在整个文字上方,点击文字的时候其实是在点击小圈圈。

<style>
/*以下样式将单选框隐藏,并绝对定位与文字内容一样大小,这样点击时可以点击整行文字*/
.el-cascader-panel .el-radio{
 position:absolute;
 z-index:10;
 padding:0 10px;
 width:132px;
 height:34px;
 line-height:34px;
}
.el-cascader-panel .el-radio__input{
 visibility:hidden;
}
.el-cascader-panel .el-input-node__postfix{
 top:10px;
}