微信小程序之 this.data和this.setData{()}区别

this.setData({})用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。用this.data而不用this.setData({})会造成页面内容不更新的问题。
例如下面的代码addPerson:函数中,如果写成this.data.name = '保存',那么点击'新增参保人',按钮的名称是不会更改成"保存"的。因为微信框架里面说了用this.data的形式,数据会变,但是视图并不会变。也就是说,其实'新增参保人'已经变成了'保存',只是视图没更新而已。用this.setData({})的形式不仅会改变数据,而且还会改变视图。
还有非常重要的一点,如果页面需要显示动态的数据的话,那么我们必须要把数据更新到data中对应的变量中。例1:更新array数组中第0个元素msg这个key对应的value。``例2:更新name的值。 msg和name都在data中,都是变量。


全部代码如下

index.js

Page({
  data: {
    text: 'init data',
    array: [{ msg: '马大哈,大马哈' }, { msg: '风格迥异' }],
    name: '新增参保人',// name的默认值
  },
  addPerson:function(event){
    // this.data.name = '保存'
    this.setData({
      name:'保存'
    })
  },
  modifyArray:function(event){
    this.setData({
      'array[0].msg':'新值'
    })
  }

})

index.wxml

<view class='topText'>{{text}}</view>
<view class='midText' bindtap="modifyArray">{{array[0].msg}}</view>
<view class='footerBtn' bindtap="addPerson">{{name}}</view>

index.wxss


.topText{
  position: fixed;
  top: 50rpx;
  left: 0;
  width: 100%;
  height: 300rpx;
  background: #e91010;
  color: #fff;
  font-size: 60rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}


.midText{
  position: fixed;
  top: 500rpx;
  left: 0;
  width: 100%;
  height: 80rpx;
  background: #10e934;
  color: rgb(0, 0, 0);
  font-size: 20rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

.footerBtn {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 110rpx;
  background: #108ee9;
  color: #fff;
  font-size: 32rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

默认状态

image.png

点击底部'新增参保人'按钮之后,按钮名称变为“保存”

image.png

点击'马大哈,大马哈'按钮之后,按钮名称变为“新值”

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,019评论 3 119
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,568评论 0 17
  • 介绍:ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok ...
    bornfreekiss阅读 1,852评论 0 2
  • 最近才开始看《拖延心理学》这本书。看到里面讲成功恐惧,觉得说的似乎就是自己。 小时候情商低,读书少,家境又不好。喜...
    Simplechic阅读 267评论 0 0
  • “阿柒,帮我搬一下这箱书。” “啊啊…来了来了。” 这是班里的日常,“阿柒”几乎是班里每个人...
    dumpling_阅读 538评论 0 0