收藏
回答

在input组件的bindinput事件里调用setData

问题模块
API和组件

在wxml里有一个input组件,初始值来自page里的data.name,如下

<input value="{{name}}"></input>


为了得到input组件的输入,需要设置bindinput事件,并在事件处理函数里更新data.name的值,如:

name_input: function (e) {

this.setData{

name: e.detail.value

}

}


请问下,这样做的话存在问题吗?用户在输入数据后 name_input被调用,里边又用setData更新了data.name的值。因为使用的是setData,这样又会导致视图被更新(虽然从结果上看不出来,因为被更新的值和用户输入的是一样的)。

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

6 个回答

  • 韬々
    韬々
    2017-03-21

    在更新视图之前,小程序会比较 setData 传入的值与实际 value 的值,如果一致则不会触发更新

    2017-03-21
    赞同
    回复
  • Destiny
    Destiny
    2017-03-22

    谢谢回答!了解了。

    2017-03-22
    赞同
    回复
  • 诗人的咸鱼
    诗人的咸鱼
    2017-03-26

    请问在setData后,input的光标会被移到最后,这个有什么好的解决方案吗?

    2017-03-26
    赞同
    回复
  • 韬々
    韬々
    2017-03-27

    有,https://mp.weixin.qq.com/debug/wxadoc/dev/component/input.html

    bindInput 事件提供定位光标 cursor 的能力

    2017-03-27
    赞同
    回复
  • 呼吸🎯
    呼吸🎯
    2017-05-16

    4楼你弄清楚人家的问题了吗?

    2017-05-16
    赞同
    回复
  • 东东
    东东
    2017-05-25

    呵呵呵,新版这样做,直接无法输入中文了~

    2017-05-25
    赞同
    回复