我的表单组件均为动态生成,当一个表单出现两次以上的picker(mode="date")日期组件时,选定一个的日期后另一个也发生改变,但由于组件是循环生成的,所以代码里只写了一个bindchange,怎样才能在数量不定的情况下让他们互不影响呢?或者说如何准确获得他们同类型的索引并得到对应的值?
<!-- 选择日期 -->
<block wx:for="{{formProperties}}" wx:key="{{item}}">
<view class="date" wx:if="{{item.type=='date'}}">
<picker mode="date" value="{{nowDate}}" bindchange="dateChange" data-index="{{index}}">
<view class="picker">
<view style="width:100%;border:1px solid #bbb;height:70rpx;line-height:70rpx;padding-left:20rpx;box-sizing:border-box;">
{{nowDate}}
<image src="../images/date.png" widthFix style="width:30rpx;height:30rpx;float:right;margin-top:20rpx;margin-right:20rpx;"></image>
</view>
</view>
</picker>
</view>
</block>
首先不同的picker你要使用不同的AppData才会有不同的展现形式出来,看你代码使用的都是nowDate这个值。
给循环数据formProperties增加一个date属性,默认为当前日期。并在循环出来的picker组件中应用该值:value=“{{ item.date }}”。展示同理,使用{{ item.date }}
在dateChange方法中,通过e.currentTarget.dataset.index获取不同picker的下标,并加以区分赋值。此处通过更改this.data.formProperties[index].date的值即可实现互不影响的效果。
请问楼主问题解决了吗