【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

相关推荐
独隅36 分钟前
前端离线暂停更新策略:Service Worker 与 PWA 的静默控制实践
前端
妙码生花1 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十八):后台系统配置管理实现
前端·后端·go
用户938515635071 小时前
React 受控/非受控组件与 React.memo 性能优化——从本质到实战
前端·javascript·react.js
IT_陈寒1 小时前
Java并行流把我坑惨了:原来不是线程安全的!
前端·人工智能·后端
计科土狗2 小时前
GESP六级专题之类与对象
java·前端·数据库
anOnion2 小时前
构建无障碍组件之Listbox Pattern
前端·html·交互设计
凌涘2 小时前
前端路由(三):鉴权、拦截与重定向
前端
半个落月2 小时前
从零梳理 React Router:路由、懒加载、嵌套页面与登录鉴权
前端·react.js
tedcloud1233 小时前
Impeccable 部署指南:开源前端设计工具 Linux 环境搭建实践
linux·运维·服务器·前端·人工智能·开源