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

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

时间:2024-09-30 13:49:57浏览次数:8  
标签:原生 list test userinfo 增删 data id 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.id
    this.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,id
    const {name,id,...rest} = this.data.userinfo
    this.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() {
    //方式1
    this.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)
    //方式2
    const newList = this.data.list.filter(item=>item!==2);
    this.setData({
      list: newList
    })
  }
})

在这里插入图片描述

标签:原生,list,test,userinfo,增删,data,id,setData
From: https://blog.csdn.net/wu2374633583/article/details/142650720

相关文章

  • nodejs koa 用knex.js链接mysql数据库,进行数据增删改查
    1、knex.js安装npminstallknex官方Installation|Knex.js中文文档|Knex.js中文网2、进行数据库链接constknex=require('knex')({client:'mysql2',connection:{host:'127.0.0.1',//地址user:'root',//账号......
  • Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进
    作者:席翁Nacos社区刚刚迎来了Star突破30000的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助!Nacos /nɑ:kəʊs/是Dynamic Namingand Configuration Service的首字母简称,定位于一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。......
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod高校师生二手用品交易系统AP
    基于SpringBoot实现的原生Android高校师生二手用品交易系统APP的背景主要可以从以下几个方面来阐述:一、社会与环保背景资源循环利用与环保意识:随着经济的快速发展和人们生活水平的提高,闲置物品的数量不断增加。高校作为知识和文化的聚集地,师生们的环保意识日益增强,对于资源......
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod校园二手电子物品交易系统
    基于SpringBoot实现的原生Android校园二手电子物品交易系统的背景可以从多个方面来阐述,以下是一个详细的背景分析:一、环保与可持续发展的需求绿色消费理念:在全球环保意识日益增强的背景下,绿色消费和可持续发展成为重要的社会议题。校园二手电子物品交易系统的建立,旨在推动资......
  • 使用 MyBatis 原生功能
    我们使用MyBatis-Flex作为MyBatis的增强框架进行代码开发,并不会影响原有的MyBatis的任何功能。一.使用 @Select 等MyBatis原生注解1.创建数据库表并插入数据CREATETABLEIFNOTEXISTStb_userinfo(idINTAUTO_INCREMENTCOMMENT'用户编号'PRIMARYKE......
  • IDea中使用MyBatis 实现原生功能和xml分页功能
    在开始之前,我们假定您已经:熟悉Java环境配置及其开发熟悉关系型数据库,比如MySQL熟悉SpringBoot及相关框架熟悉Java构建工具,比如Maven        今天我们要了解和学习的是MyBatis原生功能,在MyBatis中提供了 @Insert 、@Delete 、@Update 、@Select 4......
  • ELK日志收集之ES基础概念及索引增删改查别名
    一、ES核心基本术语集群(Cluster):由一个或多个节点组成的网络,共同提供索引和搜索功能。每个集群都有一个唯一的集群ID。#查看集群名字和UUIDcurl-XGET"localhost:9200"节点(Node):构成集群的基本单元,每个节点都有一个唯一的ID,并且可以存储数据。#查看所有节点信息curl-XGET"......
  • 列表的增删改查
    列表方法:增删改查1.增:append(),extend(),insert()2.删:pop(),remove(),clear(),del3.改:修改单个元素,修改多个元素4.查:index(),count(),切片,索引一.增:增加元素方法一:append语法格式:列表名.append(元素) append()只接受一个参数,当参数为元组,列表,字典........
  • 字符串的增删改查
    一.增:增加元素方法一:使用"+"/"*"语法格式:"字符串1"+字符串"2"*数值... 注:以下例子以两个元素进行举例,当使用"+"对两个字符串进行拼接时,注意:此时拼接出的新字符串中间是没有空格的.字符串与字符串直接没有"*"这个方法a='李二牛'b='王艳兵'c=a+bprint(c)......
  • 字典的增删改查
    一.字典的基础知识    1.字典的创建    2.字典中的键与值二.字典方法:增删改查        1.增:setdefault(),update(),通过键名添加        2.删:pop(),popitem(),clear()        3.改:通过键名修改,update()        4.查:ge......