指令
Vue.directive('elSelectTitle', {
bind: function (el) {
function setTitleHelper(el, binding, vnode) {
vnode.context.$nextTick(() => {
const inputEL = el.querySelector('.el-input__inner')
const inputVal = inputEL?.value
if (inputVal && inputEL) {
const inputValWidth = Utils.checkShowTooTip(
inputVal,
'12px microsoft yahei',
undefined
)
const inputELStyle = window.getComputedStyle(inputEL)
const inputElWidth =
inputEL.clientWidth -
parseInt(inputELStyle.paddingLeft) -
parseInt(inputELStyle.paddingRight)
if (inputValWidth >= inputElWidth) {
el.setAttribute('title', inputVal)
} else {
el.removeAttribute('title')
}
} else {
el.removeAttribute('title')
}
})
}
el.setTitleHelper = Utils.debounce(setTitleHelper, 300)
},
inserted: function (el, binding, vnode) {
if (binding.value) {
el.setTitleHelper(el, binding, vnode)
}
},
componentUpdated: function (el, binding, vnode) {
if (binding.value !== binding.oldValue) {
el.setTitleHelper(el, binding, vnode)
}
},
unbind: function (el) {
el.removeAttribute('title')
delete el.setTitleHelper
},
})
使用示例
<el-select
v-el-select-title="cqVersionForm.inheritId"
filterable
:disabled="inheritFlag"
value-key="id"
v-model="cqVersionForm.inheritId"
placeholder="请选择算量版本"
style="width: 30%"
>
<el-option
v-for="item in inheritList"
:key="item.id"
:label="item.versionName"
:disabled="item.status === 3"
:value="item.id"
>
</el-option>
</el-select>