数据的绑定问题,wxml中用判断,在一些情况下失效,如下
发布于 5 年前 作者 ccao 9665 次浏览 来自 问答

<input id=“smartMode_maxNoWaterHour”  value="{{smartMode.ProtocolData.maxNoWaterDay == 99  ? ‘-’ : smartMode.ProtocolData.maxNoWaterHour}}" bindblur=“bc_smartMode” />

保持 smartMode.ProtocolData.maxNoWaterDay = 99 不变的情况下,应该一直显示  “-”

但是,如果使用setData去赋值smartMode.ProtocolData.maxNoWaterHour,就会显示smartMode.ProtocolData.maxNoWaterHour的值,而实际应该一直显示 ‘-’


但去赋值父对象,即setData去赋值 smartMode.ProtocolData 这个变量,则显示是正确的。

5 回复

没问题的。不是小程序的bug,给一个对象里面的某个字段单独赋值,是需要

let smartMode = this.data.smartMode

smartMode.maxNoWaterHour = xxx

this.setData({

    smartMode: smartMode

})

我今天单独拿出来,试试这块问题,发现是这样的机制(很简单 很基础的),所以我提的问题不是问题了:

input组件的输入框里,在输入数据之前,显示的是input的value属性的值(单项绑定的这个值)

当如果人为的往输入框里输入数据,那就会打断这种绑定,显示实时输入的值;

再说回上面,当使用一旦input组件输入数据,需要在input的事件中重新setData 里value的所有变量(smartMode.ProtocolData.maxNoWaterDay和smartMode.ProtocolData.maxNoWaterHour)才能生效,所以setData这2个变量的父变量,就可以显示正常了。


@青团社-日日天  等你看见没问题了,我过两天关闭问题

其他都每变,就是把setData的对象,从smartMode.ProtocolData.maxNoWaterHour ,改为smartMode.ProtocolData,就解决了问题。

我也纳闷,所以,感觉应该是小程序的绑定的bug

我没问题啊,你关吧

看看你的赋值

回到顶部