【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

相关推荐
Zyed2 分钟前
[STM32]Day15读写FLASH+读取ID
前端·stm32·性能优化
jvxiao1 小时前
你真的懂作用域吗?从编译原理角度深度 JS 的作用域
前端·javascript
Darling噜啦啦1 小时前
二叉树与递归算法实战:从树结构到 LeetCode 爬楼梯,一文吃透前端数据结构与递归思维
前端·javascript·数据结构
星栈1 小时前
Rust + Makepad 应用怎么打包发布:Windows、macOS、Linux 全平台交付
前端·rust
Aolith1 小时前
React 路由守卫:我用一个组件替代了 Vue 的 beforeEach
前端·react.js
Daybreak1 小时前
从 PDD、DDD、SDD 到 TDD:我是如何用一套 Agent 工程方法论推进 My-Notion 的
前端
HjhIron2 小时前
从零实现一个待办事项应用:前端必学的Ajax与Node.js实战
前端·后端
yingyima2 小时前
JavaScript 正则表达式:从零开始的实战对比
前端
xsbcme2 小时前
VueTabRouter 插件实践(一):多标签页不是一排 TabBar
vue.js
Sammyyyyy2 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
前端·javascript·人工智能·ai·typescript·servbay