这里主要在使用picker组件时,设置了range 和value属性;同时在< picker ><view></view></picker > 内部view中调用了this.data内的数据信息进行展示;
bug说明:
如果在view内{{}}调用了range 和value以外的属性进行绑定,则会触发莫名的bug,伪代码如下:
<picker bindchange="bindPickerChange" value="{{spoindex}}" range="{{po60e_lowspoArr}}" class="lab" id="po60e_lowspo">
<view>{{pc60emenu.lowSpO2}}</view>
</picker>
我在bindPickerChange事件中改变pc60emenu.lowSpO2的值实现绑定,发现bindPickerChange第一次触发时会导致所有的data数据清空,同时蓝牙会断开,而第二次以后再bindPickerChange则又是正常的.
经排查发现,< picker ><view></view></picker > 内部不能随意调用this.data内的数据进行绑定,我们只能调用picker的value和range下的数据,具体修改如下:
<picker bindchange="bindPickerChange" value="{{spoindex}}" range="{{po60e_lowspoArr}}" class="lab" id="po60e_lowspo">
<view>{{po60e_lowspoArr[spoindex]}}</view>
</picker>
这个问题,应该是微信的坑,还是莫名其妙的巨坑.
在官方例子中,也是只调用了value和range的值,但是并没有说明不能调用其他的值绑定,坑;
picker组件没有一个主动触发弹出的事件接口给到我们,直接是包裹在picker内的组件,点击后就会触发picker弹出,感觉像是如下实现:
< picker >
<view bindtap="pick弹出事件">
<!-- 内部需要包裹的组件 -->
</view>
</picker >
而整个picker内的数据,感觉像是脱离了this.data的作用域一样,只有绑定在了value和range的属性才可以在内部使用,其他的this.data下的属性调用就会出bug.
以上纯属个人理解,官方没说原因,我也只能猜测了.
网友评论