vue element远程搜索下拉框出tooltip el-autocomplete下拉框出省略号时鼠标移上去出提示
需求如下
1.element远程搜索框下 下拉框文字超出宽度后会出省略号 要求鼠标移上去能够出文字
效果图如下
对el-tooltip进行了二次封装
<template>
<el-tooltip
ref="tlp"
:content="text"
effect="dark"
:disabled="!tooltipFlag"
:placement="placement"
class="tooltip"
>
<div
class="tooltip-wrap"
@mouseenter="handleTooltipIn($event)"
@mouseleave="handleTooltipOut($event)"
>{{ text }}</div>
</el-tooltip>
</template>
<script>
export default {
name: 'EllipsisTooltip',
props: {
// 字符内容
text: {
type: String,
default: ''
},
// tooltip显示位置
placement: {
type: String,
default: 'top-start'
}
},
data() {
return {
tooltipFlag: false // 是否显示tooltip
}
},
mounted() {
},
methods: {
handleTooltipIn (event) {
// scrollWidth: 对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大。
// offsetWidth对象整体的实际宽度,包滚动条等边线,会随对象显示大小的变化而改变。
this.tooltipFlag = event.target.scrollWidth > event.target.offsetWidth
},
handleTooltipOut(event) {
this.tooltipFlag = false
}
},
};
</script>
<style>
.tooltip-wrap{
width: 100%;
/*文本不换行*/
white-space: nowrap;
overflow: hidden;
/*文字超出用省略号*/
text-overflow:ellipsis;
}
</style>
组件使用
// 组件使用
<template>
<div class="hello">
<el-form
:model="basicInfo"
size="mini"
label-width="100px"
>
<el-row>
<el-col :span="12">
<el-form-item
label="input远程搜索框:"
prop="startDate"
>
<el-autocomplete
suffix-icon="el-icon-search"
v-model.trim="basicInfo.selctValue"
placeholder="请输入"
:fetch-suggestions="querySearchAsync"
:trigger-on-focus="false"
@select="handleSelect"
style="width: 100%"
>
<template slot-scope="{item}">
<ellipsisTooltip :text="item.value"/>
</template>
</el-autocomplete>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
import EllipsisTooltip from '@/components/EllipsisTooltip.vue';
export default {
name: 'HelloWorld',
components: {
EllipsisTooltip
},
data() {
return {
basicInfo: {
selctValue:''
}
};
},
mounted() {
},
beforeUnmount() {
},
methods: {
querySearchAsync(queryString) {
let list = [];
let wtParams = {
pageNo: 0,
countPerPage: 5,
displayName: queryString,
}
if (queryString) {
// 这是我项目中的接口 这里换成自己的接口接口
const result = await this.masterData.cabinetList(wtParams);
list = result.bizInfo;
for (let i = 0; i < list.length; i++) {
list[i].value = list[i].displayName;
}
let timeout = ''
clearTimeout(timeout)
timeout = setTimeout(() => {
cb(list)
}, 100 * Math.random())
}
},
handleSelect(item) {
console.log("点击当前项的value值" + item.value);
}
},
};
</script>
<style scoped>
</style>
版权声明:本文为yeyue1992原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。