当前位置: 首页 > news >正文

小程序 wxml 语法 —— 36 wxml 语法 - setData() 修改数据

在小程序中修改数据不推荐通过赋值的方式进行修改,通过赋值的方式修改数据无法改变页面的数据;

在微信小程序中,推荐调用 setData() 方式进行修改,setData() 方法接收对象作为参数,key 是需要修改的数据,value 是最新的值;

setData() 方法有两个作用:

  • 更新数据
  • 驱动视图更新;

下面打开微信开发者工具,演示一下如何通过 setData 进行数据修改:

  • 在 pages/cate/cate.js 中进行数据声明,如下:

    Page({
      // 在小程序页面中所需要使用的数据均来自 data 对象
      data:{
        num: 1
      },
    
      updateNum() {
        // 获取 num
        // console.log(this.data.num);
    
        // 通过赋值的方式直接修改数据 num
        this.data.num += 1;
        console.log(this.data.num);
      }
    })
    
  • 在 page/cate/cate.wxml 中添加如下代码:

    <view>{{ num }}</view>
    
    <button bind:tap="updateNum">更新 num</button>
    

    刷新页面,点击按钮,可以发现 console 打印的 num 值在不断增大,但是页面中的 num 没有发生变化,如下:

在这里插入图片描述
通过上面的演示可以知道,通过赋值可以修改数据,但是不能改变页面上已经显示的数据;如果我们想更新 data 中的数据,同时也更新页面上已经显示的数据,就得使用 setData() ;

修改一下 pages/cate/cate.js 中的代码,如下:

Page({
  // 在小程序页面中所需要使用的数据均来自 data 对象
  data:{
    num: 1
  },

  updateNum() {    
    this.setData({
      // key: 需要更新的数据的名称
      // value: 需要更新的数据的值
      num: this.data.num + 1
    })
  }
})

修改代码后,刷新页面,点击按钮,可以发现页面上的 num 值实时更新了,如下图所示:

在这里插入图片描述
参考视频:尚硅谷微信小程序开发教程

相关文章:

  • 基于协同过滤算法的音乐推荐系统(源码+部署教程)
  • 【华三(H3C)交换机上修改 NTP 配置】
  • Docker安装Kafka(内含zookeeper)
  • 第二章:盒模型的奥秘
  • 每天一道算法题【蓝桥杯】【使用最小花费爬楼梯】
  • 扩散 Transformer 策略:用于通才视觉-语言-动作学习的规模化扩散 Transformer
  • 51c大模型~合集10
  • 《使用 Python Flask + MySQL + ECharts 构建销售数据看板》实战案例笔记
  • osg安装编译第三方,完整详细过程。 libtiff/tif config.vc.hdoes not exist
  • GStreamer —— 2.17、Windows下Qt加载GStreamer库后运行 - “播放教程 5:色彩平衡“(附:完整源码)
  • 基于Debian12的SVN和Trac自动安装部署脚本
  • upload-labs-master通关攻略(17~19)
  • RSA算法:开启现代密码学的数学之钥
  • SpringMVC中有关请求参数的问题(映射路径,传递不同的参数)
  • 前端小食堂 | Day13 - Vue.js 进阶烹饪术
  • RISC-V特权模式与寄存器
  • 计网面试准备
  • Vue的生命周期
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_param
  • FreeRTOS(7)队列集
  • 第1现场 | 50多年来首次!印度举行大规模民防演习
  • 2025上海科技节将于5月17日开幕,拟设6大板块专题活动
  • 优化网络营商环境,上海严厉打击涉企网络谣言、黑灰产等违法犯罪
  • 上海发布大风黄警:预计未来24小时内将出现8-10级大风
  • 同观·德国|默茨当总理后,能否带领德国在欧盟“说了算”?
  • 中方对原产印度进口氯氰菊酯实施反倾销措施,商务部回应