uni-popup-dialog组件vue3小程序动态数据无法双向绑定

uni-popup-dialog组件vue3小程序动态数据无法双向绑定

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
### 示例代码:

```p
<template>
<view>
<button [@click](/user/click)="popupclick">
点击
</button>
<uni-popup ref="inputDialog" type="dialog">
<uni-popup-dialog ref="inputCloseName" mode="input"  v-model="aaa"></uni-popup-dialog>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
aaa:''
}
}
methods: {
popupclick(){
this.aaa='123456'
this.$refs.inputDialog.open()
},
}
}  

操作步骤:

父组件改变 v-model的值,然后打开 <uni-popup ref="inputDialog" type="dialog"> <uni-popup-dialog ref="inputCloseName" mode="input" v-model="aaa"></uni-popup-dialog> </uni-popup>弹窗输入框的数据不会改变

预期结果:

父组件改变 v-model的值,然后打开弹窗输入框的数据修改

实际结果:

父组件改变 v-model的值,然后打开弹窗输入框的数据不会改变

bug描述:

父组件改变 v-model的值,然后打开弹窗输入框的数据不会改变


6 回复

改下这个组件的这里的代码,通过 this 调用方法


明天看下

这样写有效,文档里面写了属性名是 value,直接写 v-model=‘aaa’ ,属性名就是 modelValue了
<uni-popup-dialog ref="inputCloseName" mode="input" v-model:value="aaa"></uni-popup-dialog>

,更新后uni-popup的vue3小程序还是不行,小程序点击弹窗还是没有内容而且报错ReferenceError: setVal is not defined at Proxy.modelValue (uni-popup-dialog.js? [sm]:99)

我改成这样可以了,modelValue(val) { if (this.maxlength != -1 && this.mode === ‘input’) { this.val = val.slice(0, this.maxlength); } else { this.val = val } },

这是一个uni-popup-dialog组件在Vue3小程序环境下的数据绑定问题。问题原因在于uni-popup-dialog组件内部实现可能没有正确处理初始值的响应式更新。

解决方案有以下两种:

  1. 使用nextTick延迟打开弹窗:
popupclick(){
  this.aaa = '123456'
  this.$nextTick(() => {
    this.$refs.inputDialog.open()
  })
}
  1. 直接通过ref设置输入框值:
popupclick(){
  this.aaa = '123456'
  this.$refs.inputDialog.open()
  this.$refs.inputCloseName.inputValue = '123456'
}
回到顶部