基于element-plus二次封装基础组件-----下拉表格

先说一个问题  element-plus版本的引用方法

2.3.7以及之前的引用方法:
import zhCN from "element-plus/lib/locale/lang/zh-cn";
import en from "element-plus/lib/locale/lang/en";
2.3.8的引用方法:
import zhCN from "element-plus/dist/locale/zh-cn.mjs";
import en from "element-plus/dist/locale/en.mjs";

示例图

封装组件无非就是两点 一灵活  二可复用   

<el-select
    ref="selectRef"
    v-model="props.itConfig.name"
    :placeholder="props.itConfig.placeholder"
    :loading="loading"
    :filterable="props.itConfig.filterable"
    :filter-method="filterMethod"
  >
    <template #empty>
      <div class="table" :style="{ width: `${props.itConfig.tableWidth}px` }">
        <el-table
          :data="props.itConfig.tableData"
          border
          style="width: 100%"
          @row-click="rowClick"
        >
          <el-table-column
            v-for="item in props.itConfig.tableColumn"
            :key="item.prop"
            :prop="item.prop"
            :label="item.label"
            :align="item.align || 'center'"
            :width="item.width"
            :show-overflow-tooltip="item.noShowTip"
          >
            <template #default="{ row, $index }">
              <template v-if="item.render">
                <render-col
                  :column="item"
                  :row="row"
                  :render="item.render"
                  :index="$index"
                />
              </template>
            </template>
          </el-table-column>
        </el-table>
        <div class="pagination" v-if="isShowPagination">
          <el-pagination
            v-model:current-page="props.itConfig.currentPage"
            v-model:page-size="props.itConfig.pageSize"
            layout="->, total, prev, pager, next"
            :total="props.itConfig.tableTotal"
            background
            @current-change="handleCurrentChange"
          />
        </div>
      </div>
    </template>
  </el-select>

说一下遇到的问题:

        element-plus 的el-select 组件的filterable设置成true ,自带的blur()方法就会失效

解决方案:

//vue3的写法
const onBlur = () => {
  //此处代码是为了解决 element-plus 的filterable属性设置为true,selectRef.value.blur()方法失效的问题
  let TimerID;
  clearTimeout(TimerID);
  selectRef.value.focus();
  TimerID = setTimeout(() => {
    selectRef.value.blur();
  }, 200);
};

//vue2的写法 在el-select上配置@focus="changeSelectedCondition"

changeSelectedCondition () {
     this.$refs['select'].$refs.input.blur = () => {
          console.log("999===",this.formData.selection_criteria)

      }
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值