数字限度
有一个element的表单组件 当初心愿只能输出数字,如果应用.number修饰符的话那么不能输出小数,所以本人应用vue的自定义指令实现一个这样的性能;反对录入正数;
应用办法
v-num-rule="form"
给自定义指令传一个绑定的表单对象,这样更改vNode的时候比拟不便
<el-form-item label='金额:' prop="je"> <el-input v-num-rule="form" v-model="form.je" ></el-input></el-form-item>
办法
import Vue from 'vue'function rule(val,data){ if(isNaN(data)){ val='' }else{ let index = val.indexOf('.'); if(index>0){ val= val.slice(0,index+3) } } return val}const numRule = Vue.directive("numRule", { bind: (el, builing, vNode) => { let form = builing.expression let key = vNode.componentInstance.$parent.$options.propsData.prop; el.addEventListener('input',()=>{ let val = vNode.context[form][key]; if(val[0]=='-'){ vNode.context[form][key] = rule(val,val.slice(1,val.length)) }else{ vNode.context[form][key] = rule(val,val) } }) }});export {numRule }
鼠标移上显示弹窗
我的项目中遇到一个需要,form表单的label固定宽度,超出显示省略号,鼠标移上显示悬浮框;
应用办法
<el-form-item v-form-tooltip label='我是一个长文字:'> <el-input v-model="form.gfNsrsbh"></el-input> </el-form-item>
办法
const formTooltip = Vue.directive('formTooltip', { bind(el, binding, vnode, oldVnode) { const label = el.querySelector('.el-form-item__label') var labelText = label.innerText // el-form-item label 名称 var tipContent = binding.value // v-form-tooltip 值 const ep = new Vue({ el: document.createElement('span'), template: `<el-popover content="${labelText}" popper-class="el-tooltip__popper" placement="top-start" :open-delay="500" trigger="hover"> <span slot="reference">${labelText}</span> </el-popover>` }) label.innerText = '' label.appendChild(ep.$el) } })