el-cascader动态禁用选项
首先是选择器
<el-cascader ref="refNewAssetID" style="width: 100%" :show-all-levels="false" placeholder="请选择设备名称" v-model="addForm.newAssetID" :options="newplaces" :props="{ checkStrictly: true, label: 'devName', value: 'devCatalog', emitPath: false, }" clearable filterable @change="newstoreChange" ></el-cascader>
checkStrictly设置为true,确保能选择任意层级,接下来是数据处理。
默认情况下禁用选项是disabled,可以后端返回数据时就给你动态禁用,也可前端自己来处理。
以下是处理方法
1 /** 2 * 遍历树节点,使用自定义规则,定义该选项是否禁用 3 * @param {*} arr 节点数组 4 * @param {*} nodeKey 需要对比的节点内容 5 * @param {*} rule 自定义规则函数,返回值为当前节点内容是否符合规则的Boolean值 6 */ 7 export function disableTreeNode(arr, nodeKey, rule) { 8 arr.forEach(item => { 9 if (item?.children?.length) { 10 //如果存在子节点,则递归调用 11 disableTreeNode(item.children, nodeKey, rule) 12 } 13 item.disabled = rule(item[nodeKey]) 14 }) 15 }
处理数据时。
1 request(...).then(res=>{ 2 this.newplaces = [...res] 3 disableTreeNode(this.newplaces, 'devType', value => value !== 1) 4 })
从后端获取到数据后,调用该方法即可。像是这里我的方法是devType这个字段数据若是不为1则禁用选项

浙公网安备 33010602011771号