李红1
李红1
  • 发布:2021-02-25 09:15
  • 更新:2022-08-02 17:08
  • 阅读:2750

【报Bug】 uni-app微信小程序编译 v-for 中自定义组件使用v-model 值传递失败,uni-easyinput中value 的watch监听不会触发

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: x64

HBuilderX类型: 正式

HBuilderX版本号: 3.1.2

第三方开发者工具版本号: 1.05.21

基础库版本号: 2.4.3

项目创建方式: HBuilderX

示例代码:
<uni-forms-item :label="prop.showLabel?field.title:''" :required="!!(field.rules&&field.rules.required)" :name="field.fields"  
         v-for="(field,index) in formFields" :key="index">  
            <view v-if="['select'].indexOf(field.type)>-1'" class="code">  
                <view style="flex:1">  
                    <uni-easyinput :inputBorder="!!prop.border" type="text" v-model="forms[field.fields]" @input="onInput($event,field.fields)"  
                     :placeholder="'请输入'+field.title" @focus="focus" @blur="blur"></uni-easyinput>  
                </view>  
                <view class="verify">  
                    <verify-code :mobile="forms[field.fields]" :send-type="field.verify||0"></verify-code>  
                </view>  
            </view>  
</uni-forms-item>

操作步骤:

直接随便写个uni-forms-item 循环,里面嵌套 uni-easyinput 使用v-model 绑定传入值,传入值,使用对象key 值传递,同时v-if 的条件使用判断 例如:['select'].indexOf(field.type)>-1

预期结果:

使用v-model uni-easyinput 会自动触发验证

实际结果:

使用v-model uni-easyinput 中的watch value 不会触发,导致验证不会触发

bug描述:

使用v-for 循环自定义组件 v-model 绑定编译的值存在问题直接使用:value 绑定 编译多了一个$orig 使用v-model 编译出来的就没有,导致传值失败, 导致uni-easyinput 中的watch : value 不会触发,验证也就触发不了 , 判断里面增加一个表达式导致的

2021-02-25 09:15 负责人:无 分享
已邀请:
q2

q2

类似问题:
v-for 编译的小程序代码有问题.
<block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="u-flex u-col-center">
<view>
<u-checkbox bind:input="e" vue-id="{{'1775f8c0-'+index}}" shape="circle" active-color="#FF9900"
name="{{item.$orig.id}}" value="{{item.checked}}"
data-event-opts="{{[['^input',[['
set_model',['$0','checked','$event',[]],[[['list','',index]]]]]]]}}"
bind:l="l"></u-checkbox>
</view>
</view>
</block>

value 绑定值丢失了$orig

现在我在回退到3.0版本看看有没有这个问题

l***@163.com

l***@163.com

遇到相同问题,求解决

7***@qq.com

7***@qq.com - hktk

同样问题

7***@qq.com

7***@qq.com - hktk

@DCloud_HB_WDL

一人一城一千年

一人一城一千年

同样问题,求解决方案

c***@163.com

c***@163.com - long

转微信小程序,我也遇到了,通过再次把父组件中的值,通过 props 再次传入uni-easyinput 组件中实现的,项目紧张先这样吧
《props》
twovalue: {
type: [Number, String],
default: ''
},
《watch》
// #ifdef H5 || MP-WEIXIN
twovalue(newVal) {
this.value = newVal;
},
// #endif

1***@qq.com

1***@qq.com

改成这样就好了 v-model="forms[formFields[index].fields]"

要回复问题请先登录注册