WXML可以通过数据绑定的语法绑定从逻辑层传递过来的数据字段,这里所说的数据其实就是来自于页面Page构造器的data字段,data参数是页面第一次渲染时从逻辑层传递到渲染层的数据。

       在JS脚本中如果需要获取到data上的数据,需要通过this.data获取。

<!-- page.wxml -->
<view>{{text}}</view>

// page.js
Page({
  data: {
    text: '天亮教育',
  },
onLoad(){
      console.log(this.data.text)
}
})

  如果涉及到更新,这里可以调用Page实例提供的setData把数据传递给渲染层,从而达到更新界面的目的。由于小程序的渲染层和逻辑层分别在两个线程中运行,所以setData传递数据实际是一个异步的过程,所以setData的第二个参数是一个callback回调,在这次setData对界面渲染完毕后触发。

  setData其一般调用格式是 setData(data, callback),其中data是由多个key: value构成的Object对象。

// page.js
Page({
  onLoad: function(){
    this.setData({
      text: 'change data'
    }, function(){
      // 在这次setData对界面渲染完毕后触发
    })
  }
})

注意事项:

  • 直接修改 Page实例的this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
  • 由于setData是需要两个线程的一些通信消耗,为了提高性能,每次设置的数据不应超过1024kB。
  • 不要把data中的任意一项的value设为undefined,否则可能会有引起一些不可预料的bug。