Element input Vue修改数据视图没有更新,和(json、数组监听的坑)

需求:输入框输入范围0-10,不符合要求的被替换成上次输入的值
<el-input style="width:90px;" v-model="setupData.returnCD" placeholder="停留时间"></el-input>
<span>s(0-10秒)</span>
坑1(json、数组监听 新值==旧值)
1,监听setupData
<script>
watch:{
	'setupData': {
        handler(val,oldVal){
            localStorage.setupData = JSON.stringify(val)
        },
        deep: true
    },
}
</script>
会发现val===oldVal
官方文档这么说

在这里插入图片描述

2,监听setupData.returnCD(精确到指定的key可以准确监听到val和oldval)
<script>
watch:{
    'setupData.returnCD':function(val,oldval){
        if(this.setupData.ifReturnPage && (isNaN(val) || val>10 || val<0)){
            this.$set(this.setupData,'returnCD',oldval);
        }
    }
}
</script>
坑2(修改数据视图没有更新)
上面监听到数据在0-10,然后重新赋值,发现值变了但是视图没有更新
尝试了一些方法,发现赋值语句加上延迟,问题就解决了
'setupData.returnCD':function(val,oldval){
    if(this.setupData.ifReturnPage && (isNaN(val) || val>10 || val<0)){
        setTimeout(()=>{
            this.$set(this.setupData,'returnCD',oldval);
        },1)
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值