自定义指令-------通过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
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值