【Element Ui】在 vxe-table 中使用 el-cascader,退出编辑状态显示 label 值

主要是会用到 el-cascader 的 getCheckedNodes 方法

官网:

el-cascader:Cascader 级联选择器 | Element Plus

vx-table:Vxe Table v4

具体代码如下:

html 复制代码
 <vxe-table
          :clip-config="clipConfig"
          :area-config="{
           multiple:true,
           excludeFields:['operate'],
           extendByCalc:true,  // 自动填充
           extendByCopy:true
          }"
          :keyboard-config="{
           isClip: true,
           isEdit: true,
           isEnter: true,
           isShift:true,
           isMerge:true,
           isDel: true,
           isFNR:true,
           arrowCursorLock:true,
           isEsc: true // 是否开启Esc键关闭编辑功能
          }"
          border
          keep-source
          show-overflow
          height="100%"
          :data="tableData"
          :column-config="{resizable: true}"
          :edit-config="{
          trigger: 'dblclick',
          mode: 'row'
        }"
          :mouse-config="{
            area:true,
            extension: true
          }"
          ref="tableRef"
          stripe
          @cell-click="cellClick"
          @cell-dblclick="cellDblClick"
          @edit-closed="closeEdit"
          @paste.native="pasteInfo($event)"
          v-loading="tableLoading"
          :cell-class-name="cellClassName"
      >


       //  主要代码在这里
        <vxe-column align="center" field="materialNm" :min-width="140" :edit-render="{ name:'input'}">
          <template #header>
            <span style="color: red">* </span>
            <span>品类</span>
          </template>
          <template #default="{ row }">
            <div>{{row.materialNmId}}</div>
          </template>
          <template #edit="{ row }">
            <el-cascader
                v-model="row.materialNm"
                placeholder="请输入品类"
                :options="materialNmOptions"
                :show-all-levels="false"
                filterable
                ref="cascader"
                :props="materialProp"
                clearable
                @change="changeMaterialNmId(row)"
            />
          </template>
        </vxe-column>

......

获取的 materialNmOptions 格式,如果用的不是 value 和 label ,可以通过设置 props 去改变

props:https://element-plus.org/zh-CN/component/cascader.html#cascaderprops

javascript 复制代码
const materialProp = ref({
  emitPath: false,  // 为false就只展示这一个节点
  value:'id',  // 因为我的数据返回的字段是id,所以需要这样改
})

用来展示的 label 和实际获取的 value 需要分开控制

javascript 复制代码
/** 输入品类后 */
function changeMaterialNmId(row){
  if(row.materialNm){
    /** 最关键的一步就是获取到label之后再赋值到另一个字段用来展示 */
    row.materialNmId= proxy.$refs['cascader'].getCheckedNodes()[0].label
  }else{
    row.materialNmId= null
  }
}

因为我只取一个节点,所以直接取 getCheckedNodes()0 了

相关推荐
卸任16 小时前
Vibe coding工具使用心得
前端·ai编程
brien917 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance17 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M17 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写17 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李17 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易18 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马18 小时前
前沿视界
前端
kyriewen18 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易18 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员