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的值,然后打开弹窗输入框的数据不会改变
改下这个组件的这里的代码,通过 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组件内部实现可能没有正确处理初始值的响应式更新。
解决方案有以下两种:
- 使用nextTick延迟打开弹窗:
popupclick(){
this.aaa = '123456'
this.$nextTick(() => {
this.$refs.inputDialog.open()
})
}
- 直接通过ref设置输入框值:
popupclick(){
this.aaa = '123456'
this.$refs.inputDialog.open()
this.$refs.inputCloseName.inputValue = '123456'
}