博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序改变页面显示setData、修改数组、分页等学习笔记
阅读量:4977 次
发布时间:2019-06-12

本文共 1926 字,大约阅读时间需要 6 分钟。

一、setData
小程序页面加载渲染时是通过获取js文件中Page里面初始化数据data来进行渲染。
js:
  /**
  * 页面的初始数据
  */
  data: {
    name:'张三',
  },
 
wxml:
  <text>{
{name}}</text>
 
结果:

 

 
完成渲染后,直接通过赋值是无法改变页面中所显示的数据,只能通过setData来改变(每次最多只能改变1M数据)。
如果通过直接赋值,如:this.data.name = '李四' ,是无法改变页面的显示,还会造成视图层和数据层数据不一致。
在js中onLoad函数中运行this.data.name = '李四' 
  onLoad: function(options) {
    this.data.name = '李四'; // 运行该命令修改data.name
  },
结果无法改变视图显示

 

 

正确改变页面显示的做法:

js:

运行setData前页面初始化时的数据:

  /**
  * 页面的初始数据
  */
  data: {
    name: '张三',
    age: 17,
  },
   

 

运用setData后:
  this.setData({
    name:'李四',
    age:18
  })
  结果:

  

 

二、setData运用场景和方法
  只要需要改变页面显示都需要运用setData (请求数据wx.request 后、 交互后 需要改变页面显示都需要通过setData 来改变)
  1、改变对象某个属性
      this.setData({
          ['info.name']: '李四',  // 此时属性名需要用字符串
          ['info.age']: 18
      })
 
  2、改变数组某个元素或对象属性
    为了不影响性能不建议一次性更新整个数组(如果数组数据太大),应该只更新某个元素。
 
    确定改变某个元素:  
    let str =`lists[2].name`; // 此时属性名需要用字符串
    this.setData({
      [str]:李四,
    })
 
     不确定改变的是哪个元素(交互时,用户点击数组的某个元素对应改变显示内容):
     用户点击时可以把所点击的下标传回进行对应的更改;
      click(i){
        let index=1;
        let str = `lists[${index}].name`;// 此时属性名需要用字符串
        this.setData({
          [str]:'李四',
        })
       }
 
  3、分页(适用于上拉加载更多)
    分页为了避免一次性更新太多数据,建议把数据设计成二维数组如下:
    通过wx:if来渲染。
    每次加载新页面时在users后面新添加一页数据即可
      users: [
        [{name: '张三',age: 17}, {name: '张三',age: 17}], // 第一页数据
        [{name: '张三',age: 17}, {name: '张三',age: 17}]  // 第二页数据
        。。。。
        [{name: '张三',age: 17}, {name: '张三',age: 17}]  // 第n页数据
      ]
 
      let str = `users[${page}]`;
      let datas=[{name: '张三',age: 17}, {name: '张三',age: 17}];  // 第n页数据
      this.setData({
        [str]:datas
      })
 
   
wxml:
    <block wx:for="{
{users}}">
      <view wx:for="{
{item}}" wx:for-item="userItem">
        <text>{
{userItem.name}}</text>
        <text>{
{userItem.name}}</text>
      </view>
    </block>
 
 
以上是本人初学小程序的笔记,如有错误请指出
 
 
 
 
 

转载于:https://www.cnblogs.com/winglzy/p/10394924.html

你可能感兴趣的文章
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts 图表实例
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
JavaWeb之JSON
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
optionMenu-普通菜单使用
查看>>
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>