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

小程序原生-利用setData()对不同类型的数据进行增删改

1. 声明和绑定数据

wxml文件

<view> {{school}} </view>
<view>{{obj.name}}</view>
<view id="{{id}}" > 绑定属性值 </view>
<checkbox checked="{{isChecked}}"/>
<!--算数运算-->
<view>{{ id + 1 }}</view>
<!--三元运算-->
<view>{{id===1 ? "等于":"不等于"}}</view>
<!--逻辑判断-->
<view>{{id===1}}</view>
<!--注意:在{{}}语法中,只能写表达式,不能写语句和调用JS方法-->

JS文件

Page({data: {school: "西安交通大学",obj: {name: "wwww"},id: 12,isChecked: true},
})

在这里插入图片描述

2. setData()修改数据

在小程序中修改数据不推荐使用赋值的方式进行修改,因为无法改变页面的数据。正确的方式应该是通过调用setData()方法来进行修改。
在这里插入图片描述

3. setData()修改对象类型的数据

3.1 属性新增

<view> {{userinfo.id}} </view>
<view> {{userinfo.name}} </view>
<button bind:tap="updateUserInfo">修改数据</button>
// pages/test/test.js
Page({data: {userinfo:{}},updateUserInfo(){console.log(this.data.userinfo);//新增单个/多个属性this.setData({'userinfo.name':'tom','userinfo.id':1,})}
})

在这里插入图片描述

3.2 属性值的修改

// pages/test/test.js
Page({data: {userinfo:{name:'',id:''}},updateUserInfo(){this.setData({'userinfo.name':'tom','userinfo.id':1,})}
})

3.3 实现多属性操作

采用ES6展开运算符方式处理
// pages/test/test.js
Page({data: {userinfo:{name:'',id:''}},updateUserInfo(){//复制this.data.userinfo的值到userinfo//后面加的字段会自动覆盖前面对象里面的属性值const userinfo ={... this.data.userinfo,name:"jerry",id:18}this.setData({//将上面的userinfothis.data.userinfo//赋值到键和值如果一样的话,可以简写如下userinfo})}
})

在这里插入图片描述

采用Object.assign()方式处理

Object.assign()将多个对象合并成一个对象,从后往前合并,以后面的为准。

// pages/test/test.js
Page({data: {userinfo:{name:'',id:''}},updateUserInfo(){const userinfo = Object.assign(this.data.userinfo,{name:'jerry'},{id:18})this.setData({//将上面的userinfothis.data.userinfo//赋值到键和值如果一样的话,可以简写如下userinfo})}
})

3.4 删除单个属性

// pages/test/test.js
Page({data: {userinfo: {name: 'tom',id: '1'}},updateUserInfo() {delete this.data.userinfo.idthis.setData({userinfo: this.data.userinfo})}
})

在这里插入图片描述

3.5 删除多个属性

// pages/test/test.js
Page({data: {userinfo: {name: 'tom',id: '1'}},updateUserInfo() {//删除多个属性  rest 剩余参数//将userinfo解构到name,id,rest中,也就是rest里面没有name,id,再将其赋给userinfo,自然没有name,idconst {name,id,...rest} = this.data.userinfothis.setData({userinfo: rest})}
})

在这里插入图片描述

4. setData()修改数组数据

4.1 新增数组元素

<view wx:for="{{list}}" wx:key="index" > {{item}} </view><button bind:tap="updateList">修改数据</button>
// pages/test/test.js
Page({data: {list:[1,2,3,4,5]},updateList() {//新增数组元素,不能直接使用push方法,因为不能更新页面数据,必须要结合setData方法this.data.list.push(10)this.setData({list: this.data.list})}
})

在这里插入图片描述

// pages/test/test.js
Page({data: {list:[1,2,3,4,5]},updateList() {//方式1:新增数组元素,不能直接使用push方法,因为不能更新页面数据,必须要结合setData方法// this.data.list.push(10)//方式2: 利用concat方法const newlist = this.data.list.concat(10);this.setData({list: newlist})}
})

在这里插入图片描述

// pages/test/test.js
Page({data: {list:[1,2,3,4,5]},updateList() {//方式1:新增数组元素,不能直接使用push方法,因为不能更新页面数据,必须要结合setData方法// this.data.list.push(10)//方式2: 利用concat方法// const newlist = this.data.list.concat(10);//方式3:利用ES6的展开运算符const newlist = [...this.data.list,10]this.setData({list: newlist})}
})

在这里插入图片描述

4.2 修改数组元素

<view> {{list[0].name}} </view><button bind:tap="updateList">修改数据</button>
// pages/test/test.js
Page({data: {list:[{'name':'tom','age':17}]},updateList() {this.setData({'list[0].name': 'wuk'})}
})

在这里插入图片描述

4.3 数组元素删除

<view wx:for="{{list}}" wx:key="index" > {{item}} </view>
<button bind:tap="updateList">修改数据</button>
// pages/test/test.js
Page({data: {list:[1,2,3,4,5]},updateList() {//方式1this.data.list.splice(1,1)this.setData({list: this.data.list})}
})

在这里插入图片描述

// pages/test/test.js
Page({data: {list:[1,2,3,4,5]},updateList() {//方式1// this.data.list.splice(1,1)//方式2const newList = this.data.list.filter(item=>item!==2);this.setData({list: newList})}
})

在这里插入图片描述

相关文章:

  • 《微信小程序实战(4) · 地图导航功能》
  • 【每天学个新注解】Day 10 Lombok注解简解(九)—@Accessors
  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store
  • SQL第11课——使用子查询
  • 983. 最低票价
  • PHP读取文件内容的几种方法和函数
  • django使用笔记6--docker部署
  • 破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略
  • 在Linux中进行OpenSSH升级(编译安装在openssh目录)
  • C语言系列4——指针与数组(1)
  • 【数据库】 MongoDB 用户分配新的角色和权限
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx
  • Cannon-es.js之HingeConstraint铰链约束案例
  • leetcode163.缺失的区间,模拟
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 345-反转字符串中的元音字母
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CSS实用技巧
  • ES6核心特性
  • express.js的介绍及使用
  • FineReport中如何实现自动滚屏效果
  • Fundebug计费标准解释:事件数是如何定义的?
  • Java超时控制的实现
  • Java方法详解
  • JAVA之继承和多态
  • js如何打印object对象
  • JS专题之继承
  • Median of Two Sorted Arrays
  • Python连接Oracle
  • React组件设计模式(一)
  • Spring核心 Bean的高级装配
  • SSH 免密登录
  • 阿里研究院入选中国企业智库系统影响力榜
  • 读懂package.json -- 依赖管理
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 今年的LC3大会没了?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 码农张的Bug人生 - 初来乍到
  • 目录与文件属性:编写ls
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 怎么把视频里的音乐提取出来
  • C# - 为值类型重定义相等性
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (C++)八皇后问题
  • (Java数据结构)ArrayList
  • (二)Linux——Linux常用指令
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910