微信小程序使用setData修改数组中单个对象的方法分析


Posted in Javascript onDecember 30, 2018

本文实例讲述了微信小程序使用setData修改数组中单个对象的方法。分享给大家供大家参考,具体如下:

微信小程序已经出来挺久的时间了,之前只是在文档上粗略的看了一下,最近稍得空闲,便利用微信小程序平台写一个练手的项目,顺便学习一下小程序开发,感觉大体跟前端开发基本类似,但是因为是在微信的平台上运行,具体还是要根据小程序的规则来编写代码的,其中还是有部分的内容跟前端中常见的有所不同,于是接下来的博客里,也会顺手记录微信小程序开发过程中的一些坑,帮助后来的小程序开发者少踩一些坑,当然我踩的坑大部分都是以前的开发者踩过的,我所做的也仅仅是记录,分享。

习惯使用Vue或者React这类框架的开发者们,肯定不会对修改data内中数组的单个对象而烦恼,因为这些框架已经帮我们很好的处理了这个问题,并且在文档上也写的非常清楚。

比如要求是有一个数组存放了购物车的商品信息,而你在购物车内修改了单个商品的期望购买数量后,我们就要动态的更新这个单个对象的购买数量值,如果在小程序里我们会怎么做呢?

如果你按照Vue的写法来实现的话,不出意外会失败。而微信小程序也只给我们提供了一个setData方法,这个方法是使用键值对的形式对数据进行修改,例如:

this.setData({
  name : 'leon'
})

回到我们刚刚的例子里,这时候,如果你想修改单个商品的数量信息,应该怎么写?

首先展示一种错误的写法:

Page({
 data: {
  array: [{text: 'init data'}],
 },
 changeItemInArray: function (index) {
 this.setData({
 'array['+index+'].text':'changed data'
 })
 }
})

如果这样动态的写index,很显然,这样是无法使用在对象的key中的,我相信小程序的新手开发者可能尝试过这样的写法。

那么正确的写法究竟是怎么样的呢?

changeItemInArray: function (index) {
 // 提前准备好对象
 var item = this.data.list[index]
 item.count = 100
 // 依旧是根据index获取数组中的对象
 var key = "list["+ index + "]"
 this.setData({
 // 这里使用键值对方式赋值
  key: item 
 }, function () {})
}

最后,希望以后的小程序版本更新中,有更好的赋值方法。希望这篇文章能帮助到小程序的新手开发者。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
关于JS控制代码暂停的实现方法分享
Oct 11 Javascript
js/jQuery对象互转(快速操作dom元素)
Feb 04 Javascript
jQuery select表单提交省市区城市三级联动核心代码
Jun 09 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 Javascript
零基础轻松学JavaScript闭包
Dec 30 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
微信小程序提交form操作示例
Dec 30 #Javascript
bootstrap下拉分页样式 带跳转页码
Dec 29 #Javascript
详解vue 兼容IE报错解决方案
Dec 29 #Javascript
玩转Koa之koa-router原理解析
Dec 29 #Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 #Javascript
玩转Koa之核心原理分析
Dec 29 #Javascript
如何从0开始用node写一个自己的命令行程序
Dec 29 #Javascript
You might like
PHP 常见郁闷问题答解
2006/11/25 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Django中使用group_by的方法
2015/05/26 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
幼儿园新学期寄语
2014/01/18 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
演讲稿的写法
2014/05/19 职场文书
分公司经理任命书
2014/06/05 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2015年党员承诺书
2015/01/21 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang