vue Tooltip提示动态换行问题,间隔指定字符数换行

问题描述:

使用element 组件el-table,表格某一列字段过长,采用el-tooltip进行提示,但提示中的内容过长不能换行展示。如图1

图1

对列表内容重置:

<template slot-scope="scope">
    {{scope.row.explainContent}}
</template>

 对提示内容设置:

 

完整代码: 

<el-table-column prop="explainContent"label="备注内容">
    <template slot-scope="scope">
        <el-tooltip effect="dark" placement="right-start" 
            v-if="scope.row.explainContent.length>=15">
            <div v-html="scope.row.explainContent.substring(0,15)"></div>
            <div slot="content" class="tooltip-content">
                <div class="tip_div" v-html="toBreak(scope.row.explainContent,30)"> 
                   {{scope.row.explainContent}}
                </div>
            </div>
        </el-tooltip>
        <div v-else>{{scope.row.explainContent}}</div>
    </template>
</el-table-column>
toBreak(val, num) {
    //备注内容提示过长。强制间隔20个字符换行
    var str = val;
    var number = num;//间隔换行的字符数
    var bytesCount = 0;//定义一个变量记录字符串总字节长度
    var s = "";//定义一个空字符串用来接收重新拼接换行之后的字符串
    var pattern = new RegExp("[\u4E00-\u9FA5]+");//汉字的正则表达式
    for (var i = 0; i < str.length; i++) {//遍历原字符串
        var c = str.charAt(i);//拿到每一个下标对应的值
        // 统计字符串的字符长度
        if (pattern.test(c)) {
            bytesCount += 2;//如果是汉字长度+2
        } else {
            bytesCount += 1;//不是汉字长度+1
        }
        s += str.charAt(i);//重新拼接字符串
        // 换行
        if (bytesCount >= number) {//在指定的长度位置插入换行标签
            s = s + '<br>';
            // 重置
            bytesCount = 0;//保证在下一个相同长度后继续换行
        }
    }
    return s;
}

呈现效果: 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 根据提供的引用内容,可以看出在Vue动态绑定值时,如果从后台接收到的值中包含符,可以通过以下方式处理。在Vue的data属性中,将接收到的值作为字符串进赋值,然后在模板中使用v-html指令将字符串渲染为HTML内容。这样可以保留符的显示效果。例如,可以将接收到的值赋给appIntro属性,并在模板中使用v-html指令渲染该属性的值。具体代码如下所示: ```html <span id="appIntro" style="display: none">${app.intro}</span> <script> let vm = new Vue({ el: '#app-Detail', data: function () { return { appIntro: '' } }, mounted: function () { this.appIntro = $("#appIntro").html(); }, // ... }); </script> ``` 在上述代码中,通过将接收到的值赋给appIntro属性,并在mounted钩子函数中使用jQuery方法获取隐藏元素的内容,然后将其赋给appIntro属性。接下来,在模板中使用v-html指令将appIntro属性的值渲染为HTML内容。这样就可以保留符的显示效果。 #### 引用[.reference_title] - *1* *2* *3* [Vue Jsp页面值绑定出现后台值导致syntaxerror 问题处理](https://blog.csdn.net/wejack/article/details/126771309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值