子寒
子寒
  • 发布:2020-04-02 20:06
  • 更新:2020-05-13 15:29
  • 阅读:1168

反馈 uniapp 中 input 组件的一个bug

分类:uni-app
<template>  
    <view>  
        <input :value="inputValue" @input="onInput">  
    </view>  
<template>  

<script>  
export default {  
    data() {  
        return {  
            inputValue: ''  
        }  
    },  
    methods: {  
        onInput(e) {  
            this.inputValue = '2'  
        }  
    }  
}  
</script>

多次输入后,inputValue 就与 :value 解除绑定了

经测试,原生小程序没有这个问题

2020-04-02 20:06 负责人:无 分享
已邀请:
zhanqi

zhanqi

怎么不用v-model

  • 子寒 (作者)

    一样的

    2020-04-02 21:47

DCloud_UNI_GSQ

DCloud_UNI_GSQ

HBuilderX版本多少?

  • 子寒 (作者)

    2.6.8.20200330

    2020-04-03 14:03

  • DCloud_UNI_GSQ

    回复 子寒: 是否启用了v3编译模式?

    2020-04-07 11:01

  • 子寒 (作者)

    回复 DCloud_UNI_GSQ: 【App常用其他设置】里确实有个v3编译器被勾选上,但我只编译微信小程序,和app无关吧

    2020-04-07 14:18

  • 子寒 (作者)

    回复 DCloud_UNI_GSQ: 我已经把完整的代码放上了,你试试

    2020-04-07 14:34

  • 子寒 (作者)

    回复 DCloud_UNI_GSQ: 我的需求是:“当用户输入错误的内容时,返回一个正确的值,可参考淘宝/京东购物车输入购买数量”,不仅仅时@input时有问题,@blur也有一样的问题

    2020-04-07 14:37

  • DCloud_UNI_GSQ

    回复 子寒: input、textarea 组件的 input 事件处理函数内实时修改当前值不生效,可以延迟设置,例如:setTimeout(() => { this.value = 100 }, 0)

    2020-04-07 14:39

  • 子寒 (作者)

    回复 DCloud_UNI_GSQ: 感谢你的回复,添加定时器是有用的,但遇到性能较差,运行小程序卡顿的手机就不好说了,我已经通过其他方式变相避免了这个问题,如果有类似微信小程序的 this.setData 方法就好了

    2020-04-07 14:48

  • 子寒 (作者)

    回复 DCloud_UNI_GSQ: 经过我都再三测试,@blur 添加定时器是有一定用的,@input 没用,问题依旧

    2020-04-07 15:27

DCloud_UNI_GSQ

DCloud_UNI_GSQ

你每次都赋值2当然不行了,vue 观测不到变化呢。
你试试这种:

this.value = e.detail.value;  
this.$nextTick(() => {  
  this.value = 100  
})
  • 3***@qq.com

    我用了这个判断,小程序的input框里值不变,但我后台数据字段值变了

    2021-05-31 21:15

该问题目前已经被锁定, 无法添加新回复