watch避坑,使用computed进行处理数据

业务场景:在vue中监听el-input 中的字数有没有超过60,如果超过60字时将60后面的字变为 “>>” 符号,以此实现预览苹果手机推送摘要场景。

  • 错误:开始的逻辑是使用watch监听,检查length超过60直接 加上符号,如下:

    watch: {
        dataInfo: {
            handler(val) {
              if(val.length>60) {
                this.dataInfo.description = val.concat('>>')
              }
            },
            deep: true
          }
    }
    
    // ERROR: You may have an infinite update loop in watcher with expression。
    // 看了一下错误知道了,犯了初级错误,一边监听一边更改值,会直接陷入死循环。
    
  • 解决:使用 computed计算属性进行监听赋值,具体如下:

    1. data 中定义一个用于保存输入文本的变量(例如 textInput),并初始化为空字符串。
    2. el-input 组件上使用 v-model 指令将输入的文本绑定到 textInput 变量:
    <el-input v-model="textInput"></el-input>
    
    1. 创建一个计算属性(例如 trimmedText)来截取前60个字符并添加 “>>” 符号:
    computed: {
      trimmedText() {
        if (this.textInput.length > 60) {
          return this.textInput.substring(0, 60) + ">>";
        } else {
          return this.textInput;
        }
      }
    }
    
    1. 在模板中使用计算属性 trimmedText 来显示处理后的文本:
    <p>{{ trimmedText }}</p>
    

    这样,当在 el-input 中输入的文本长度超过60时,计算属性 trimmedText 会自动截取前60个字符并在末尾添加 “>>” 符号。如果输入的文本长度不超过60,将显示完整的文本。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尤山海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值