收藏
回答

数据的绑定问题,wxml中用判断,在一些情况下失效,如下

问题模块
API和组件

<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 这个变量,则显示是正确的。



最后一次编辑于  2017-12-26  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

5 个回答

  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    2017-12-27

    看看你的赋值

    2017-12-27
    赞同
    回复
  • 高帅
    高帅
    2017-12-27

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

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

    2017-12-27
    赞同
    回复
  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    2017-12-28

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

    let smartMode = this.data.smartMode

    smartMode.maxNoWaterHour = xxx

    this.setData({

        smartMode: smartMode

    })

    2017-12-28
    赞同
    回复
  • 高帅
    高帅
    2018-01-03

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

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

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

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


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

    2018-01-03
    赞同
    回复
  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    2018-01-03

    我没问题啊,你关吧

    2018-01-03
    赞同
    回复