自定义指令-------通过vue自定义指令,实现element-table可编辑表格功能

通过vue自定义指令,实现element-table可编辑表格功能

html内容

   <el-table-column prop="aaaa" label="自定义指令" align="center" min-width="300">
          <template slot-scope="scope" slot="header">
                <span v-fssc-required="true">自定义指令</span>
          </template>
          <template slot-scope="scope">
              <el-form-item :prop="'tableList['+ scope.$index+'].aaaa'" required>
                  <div v-edit-column>
                    	<el-select  class="edit-column-edit" v-model="value" placeholder="请选择">
                         	<el-option  v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
						</el-select>
                     	<el-input class="edit-column-display" style="width:300px" size="mini" :value="scope.row.aaaa+ (scope.row.aaaa ?  ' - ' :'') + scope.row.aaaaTxt"></el-input>
                    </div>
                </el-form-item>
            </template>
        </el-table-column>

自定义必填指令v-fssc-required,自定义表格编辑指令v-edit-column

Vue.directive('fssc-required', {
  inserted: function (el, val) {
    if (!val.hasOwnProperty('value') || val.value === true) {
      let html = `<span style="color:#F56C6C;margin-right:3px">*</span>${el.innerHTML}`
      el.innerHTML = html;
    }
  }
});

Vue.directive('edit-column', {
  inserted: function (el, val) {
    // console.log(val,el)
    const editDom =  el.querySelector('.edit-column-edit');
    const displayDom =  el.querySelector('.edit-column-display');
    const elInputDom = el.querySelector('.el-input__inner'); 
    editDom.style.display = "none"
    // console.log(editDom,'editDom',displayDom)
    el.addEventListener('click',e=>{
      editDom.style.display = "inline-block"
      elInputDom.focus();
      displayDom.style.display = "none";
    })
    
    // console.log(elInputDom,'elInputDom----  ')
    elInputDom.addEventListener('blur',e=>{
      editDom.style.display = "none"
      displayDom.style.display = "inline-block";
    })
  }
})

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
el-tableel-table-columnElement UI库中的两个组件,用于展示表格数据。自定义指令可以用于对el-tableel-table-column进行扩展和定制。 对于el-table,可以使用自定义指令实现一些特定的功能,比如自定义排序、拖拽列宽、固定表头等。通过自定义指令,可以在el-table上添加一些额外的行为或样式。 对于el-table-column,可以使用自定义指令实现一些特定的列样式或行为。比如,可以通过自定义指令实现某一列的特殊渲染、列宽自适应等功能。 下面是一个示例,展示如何使用自定义指令来扩展el-tableel-table-column: 1. 创建一个自定义指令: ```javascript Vue.directive('my-directive', { bind: function (el, binding, vnode) { // 在绑定时执行的逻辑 // 可以在这里修改el-tableel-table-column的行为或样式 }, inserted: function (el, binding, vnode) { // 在元素插入到DOM时执行的逻辑 }, update: function (el, binding, vnode, oldVnode) { // 在组件更新时执行的逻辑 }, componentUpdated: function (el, binding, vnode, oldVnode) { // 在组件更新完成后执行的逻辑 }, unbind: function (el, binding, vnode) { // 在解绑时执行的逻辑 } }); ``` 2. 在el-tableel-table-column上使用自定义指令: ```html <el-table v-my-directive> <!-- 表格内容 --> </el-table> <el-table-column v-my-directive> <!-- 列内容 --> </el-table-column> ``` 通过上述方式,你可以根据自己的需求来扩展和定制el-tableel-table-column的行为和样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值