关于element-UI 遇到的问题 以及开发笔记

1.el-table 添加合计项与固定列,会出现固定列的滚动条拖不动

el-table合计项与固定列同时使用时,滚动条一旦移入固定列下方,鼠标就无法选中滚动条,主要问题是固定列的层级更高,覆盖住了滚动条,设置z-index可以解决,但是会出现固定列 box-show 无效的样式问题,下方css可以解决这两个问题

.el-table__fixed, .el-table__fixed-right { // 解决添加合计行  固定表头滚动条无法选中问题
    pointer-events: none;
  }
 .el-table__fixed, .el-table__fixed-right > .td {
    pointer-events: none;
  }

设置这个 设置这个会出,固定列中的点击事件失效了!(实际开发中暂未遇到这个问题)
解决:父级元素禁用,子元素启用

.el-table__fixed, .el-table__fixed-right {
    pointer-events: none;
}
.el-table__fixed, .el-table__fixed-right > .td {
    pointer-events: none;
}
.el-table__fixed > * {
    pointer-events: all;
}
.el-form-item__content {
    pointer-events: all;
}

2.el-from的字段效验中 validator 的用法

  1. validator 函数中取当前效验的字段(实例效验输入框只能输入整数最多两位小数)
const validateMoney = (rule, value, callback, pars) => {
              let key = Object.keys(pars)[0]   // pras 为当前输入框v-modle绑定的字段  输出为一个对象
              if (value) {
                this.form[key] =
                  ('' + value) // 第一步:转成字符串
                    .replace(/[^\d^\.]+/g, '') // 第二步:把不是数字,不是小数点的过滤掉
                    .replace(/^0+(\d)/, '$1') // 第三步:第一位0开头,0后面为数字,则过滤掉,取后面的数字
                    .replace(/^\./, '0.') // 第四步:如果输入的第一位为小数点,则替换成 0. 实现自动补全
                    .match(/^\d*(\.?\d{0,2})/g)[0] || '' // 第五步:最终匹配得到结果 以数字开头,只有一个小数点,而且小数点后面只能有0到2位小数
                callback()
              } else {
                callback()
              }
            }
  1. el-input 只能输入数字或保留两位小数
// oninput="value=value.replace(/[^0-9.]/g,'')" 只能输入数字小数点 不限制小数点位数 
// onkeyup="value=value.replace(/[^\d]/g,'')" 只能输入数字
<el-input
            v-model="form.amount"
            onkeyup="value=('' + value).replace(/[^\d^\.]+/g, '').replace(/^0+(\d)/, '$1').replace(/^\./, '0.').match(/^\d*(\.?\d{0,2})/g)[0] || ''"
            clearable
          />

3.el-table属性 render-header(列标题 Label 区域渲染使用的 Function)

使用时如何传递自定义参数

<el-table-column
   ref="table"
  :render-header="(h,obj) => renderHeader(h,obj,{xxx})"
>
</el-table-column>
renderHeader (h, { column, $index },{xxx}) {
    console.log({xxx})  // {xxx}为自定义传递的参数
 // 表头添加提示
    return [
     column.label,
        h(
            'el-tooltip',
            {
                props: {
                    placement: 'top',
                    effect:"light",
                    //content:"提示框内容",//如果提示内容短不需要换行,直接使用这个提示内容
                },
            },
            [
                h('div',
                    {//当前div是为了实现换行,就这换行研究了好久。。。
                        slot:"content",
                    },
                    ["第一段",
                    h('br'),
                    "第二段",
                    h('br'),
                    "第三段"]
                        ),
                      h('span', {//问号模块
                      class: {
                    'el-icon-question': true
                    }
                }),
                  ],
              )
        ]
}

3. 使用el-select中multiple多选回显数据后无法进行编辑

场景:在编辑回显的数据时,使用v-model绑定 el-select多选,但无法进行编辑、删除
这是因为由于一些嵌套特别深的数据,导致数据更新了,但是页面却没有重新渲染,需要使用this.forceUpdate()迫使 Vue 实例重新渲染。在el-select 中使用@change="forceUpdate()"

<el-select v-model="formData.tagsArray" placeholder="请选择标签" multiple clearable :style="{width: '100%'}"
  @change="$forceUpdate()">
  <el-option v-for="(item) in tagsOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容