【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

相关推荐
FL16238631296 小时前
室内易燃物识别易燃评估室内易燃程度识别分割数据集labelme格式1015张85类别
java·服务器·前端
用户059540174466 小时前
把 AI 长期记忆去重测试从 20 分钟压到 40 秒,重复率从 18% 干到 1.5%
前端·css
kyriewen7 小时前
我把 AI 写的并发请求控制器手写了一遍——3 个语义我当时根本讲不清
前端·javascript·面试
_codemonster7 小时前
Vue中的ref和reactive到底在干嘛
前端·javascript·vue.js
IT_陈寒7 小时前
为什么我的JavaScript闭包总是漏掉那个变量?
前端·人工智能·后端
两只羊ovo8 小时前
前端八股之 storage & this:两个最容易卡住的点,一次讲透
前端
用户921080262868 小时前
Bubble 打字机效果实践:从项目配置到源码实现
前端
weixin_461408588 小时前
npm npx yarn
开发语言·前端·javascript
四千岁8 小时前
RAG系统中的分块
前端·javascript·后端