小程序setData方法使用总结】的更多相关文章

做了一下小程序setData使用方法总结,如有错误,请不吝指出,Thanks♪(・ω・)ノ  //示例data: data:{ user:'young', obj:{ name:'蓝色蒲公英', age:'17' }, arr:[{ name:'Lucy', age: '18' },{ name:'半夏', age:'19' }] }  一.直接修改data的某个属性 this.setData({ user:'007' }); 二.修改data里的数组或对象的属性 this.setData({…
此篇文章是本人对setData方法的一些理解,是查阅文档和查找一些其他资料综述的,有所不足希望指正! 直接进入正题! 一.setData()方法: 1.参数接受一个对象,以key,value的形式表示: 2.参数和变量名称一致,可用一个值代替(es6新语法特性) 如上图所示,在this.data中设置ceshi这条数据,在方法中,我们定义ceshi变量让其等于that.data.ceshi; 然后对ceshi进行操作,其实就是对that.data.ceshi进行操作,而that.setData(…
一般setData方法多用于点击后改变页面信息或者刷新后与后台交互获取最新的信息 注意: 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据. 方法如下: js: Page({ data: { text: 'init data', num: , array: [{text: 'init data'}], object: { text: 'init data' } }, ch…
setData() 参数格式 字段 类型 必填 描述 最低版本 data Object 是 这次要改变的数据   callback Function 否 回调函数 1.5.0 callback 是一个回调函数,在这次setData对界面渲染完毕后调用. 注意: 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据. 请不要把 data 中任何一项的 value 设为 und…
setData:function(obj){ let that = this; let keys = []; let val,data; Object.keys(obj).forEach(function(key){ keys = key.split('.'); val = obj[key]; data = that.$data; keys.forEach(function(key2,index){ if(index+1 == keys.length){ that.$set(data,key2,…
最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的: Page({ data: { array: [{text: 'init data'}], }, changeItemInArray: function() { this.setData({ 'array[0].text':'changed data' }) } }) 使用了 ‘array[0].text’ : ‘changed data’ 这样的值.但在…
1.问题说明 有一组数据,用来存储图片路径,动态修改图片的路径来上传图片,而小程序JS只能通过事件获取时机和setData方法修改数据来改变view. 而用这样写的方式明显是错误的 2.解决办法 字符串拼接…
众所周知,微信小程序里所有对数据的修改只有在setData里修改才会在页面上渲染.在此分享小程序里复杂数组的更新.删除.添加.拼接 初始数据 数组嵌套对象 data: { cartList = [{ id: 1, goods: {id: 1, name: 'wechat'}, checked: true }, { id: 2, goods: {}, checked: false }, { id: 3, goods: {}, checked: true }] }, 索引部分删除 let index…
datas:[ { id:1000, name: "帅哥", title: '...', b: '...', d: 0, f:0, .... }, { id:1001, name: "美女", title: '...', b: '...', d: 0, f:0, .... }, ... ] 如上:后台返回数据中有可能包含了大量的无用数据,数据量如果过大时候会对小程序渲染界面有影响吗? 答案是:有 一般情况下我们是在wxml中循环data,然后取出我们需要的字段,其他…
很久没有写博客了,之前换了一份工作,很久没有做Android开发了,现在转做前端开发了,记录一下遇到的问题及解决的方法. 最近做微信小程序开发,遇到一个需求,后台管理系统生成的问卷和投票会有一个二维码,需要用微信扫码后自动打开微信小程序的问卷或投票详情页面. 首先,每个问卷或投票都有一个唯一的id,使用vue-qr来生成二维码 vue-qr安装: npm install vue-qr --save 安装完成后,在页面中引入vue-qr插件 <script>import vueQr from &…
欢迎大家转载.为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也能够下载.假设你没有积分.能够联系我索要! 在执行java程序的时候突然出现启动:未初始化小程序,  百度了一大堆资料都没有解决方式.但程序还是要用啊.依照又一次建立project的步骤又一次来吧.总之肯定是某个地方出现了错误! 依据多次尝试最终找到了解决方法.不知道你们的和我的是不是相同的原因引起的.方法例如以下: 1.右击project----属性,如图: 2.依…
优化建议:1.频繁的去setData--我曾经用这个弄过动画效果,当然后来发现JS动画不适合小程序,CSS3动画才是王道2.每次setData都传递大量新数据--这个大量还真不好理解,暂时定为排行榜类型数据传输一次传输成千上百个用户吧,这种情况应该考虑分页:但是当分页过得是否就累计成大量了呢?wx:key是否解决了这个问题呢?官方的说法是,有wx:key可以提高渲染效率,这事可行3.后台态页面进行setData--我的理解是onHide不应该使用setData,还没遇到过非要在onHide里面使…
1.安装Node.js(>8.5.0)https://nodejs.org/ npm升级到最新版本的方法:npm install -g npm自动更新到最新版本 2.配置cnpm:在命令行中输入 npm install -g cnpm --registry=https://registry.npm.taobao.org配置完成后输入cnpm -v ,有cnpm版本号输出并且在D盘nodejs文件夹下的node_global的node_modules文件夹下有一个cnpm文件夹,证明配置cnpm成…
页面的数据中如果有子元素,如下图nowQuestion中的deleted元素 在小程序的setData中,不能直接用nowQuestion.deleted来设定它的值,而需要再定义一个变量承接 另外,不定义其它变量,直接用deleted:true也是可以改变deleted的值的,但是如果外层也有一个deleted,就会改变外层的deleted而不是内层的…
App() 注册一个小程序 小程序的入口方法 //app.js App({ onLaunch: function(options) { console.log("onLaunch"); }, onShow: function(options) { console.log("onShow"); // Do something when show. }, onHide: function() { console.log("onHide"); // D…
首先先介绍一下微信小程序Page.prototype.setData(Object data, Function callback)的讲解: setData函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步) 微信小程序官网文档只对字符串,数字,数组和对象类型的数据通过对setData进行了修改,却没有对动态数据进行讲解,在这里我就针对静态数据以及动态数据的修改进行讲解. 这里关键是动态数据修改,通过使用[...]: "..."进行动态数据赋值,如下…
为何要封装接口? 有小程序开发的经验者,相信对微信API Request很熟悉了.对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据.诚然,直接使用api发起请求对接接口开发速度是快的,可是,一旦对接的接口多了起来,这样简单,直接的方法出现了很多缺陷. 难以维护.域名被换或者接口名被换,修改接口名得一个个文件找,而且可能不清楚有多少文件调用了需要修改的接口,导致效率低下 难以管理.无法了解到底用了哪些接口,难于统一修改,除非一个个找出了,并其归纳 代码重复.有些…
最近这段时间在写微信小程序,有一个页面需要动态修改 data 中的数据,而这里似乎是个坑. 1.正常修改 正常修改很简单,当触发 change 事件时,数据和页面都会同时发生改变.这个也不用多说,很简单的例子.   2.如何修改对象中某个属性值 当你想把下面代码中 human 中的 height 的值改成 178 时,直接用 this.setData ({human.height: 178}) 会报错.   这个时候可以先用字符串拼接属性名,然后用 [] 包裹起来,这里画上,待会可能要考.  …
相信大家在做小程序的时候不可避免的会碰到支付功能小程序的支付和pc的是有区别的小程序的支付方法为 wx.requestPayment wx.requestPayment({ timeStamp: '', //时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 nonceStr: '', //随机字符串,长度为32个字符以下 package: '', //统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*** signType: '…
有如下几种数据格式: sort_condition: { curIndex: ', curArrow: ' } ,//排序界面 date_condition: [ { curIndex: ', curArrow: ' } ], screen_type: ,//0 排序 1 条件 2 更多 设置格式的时候可以分别采用下面的方法: this.setData({ 'sort_condition.curIndex': 1 }); this.setData({ 'date_condition[0].cur…
this.setData({'judge[current]':true}); 以此句进行修改值,会报错 Error: Only digits (0-9) can be put inside [] in the path string: judge[current] 但实际上current变量,为整型,打印出来的值为0 this.setData({'judge[0]':true}); 而把current直接以0代替,就不会有问题. 想请教一下各位大佬这是怎么回事?难道是在setData里不用以变量…
data:{ obj:{ name:'hello' } } 对data中obj的name字段进行重新赋值. onLoad: function (option) { var value = 'obj.name'; this.setData({ [value]:'world' }) console.log('obj',this.data.obj.name) }…
官方文档是这样的: changeItemInArray: function() { // you can use this way to modify a danamic data path this.setData({ 'array[0].text':'changed data' }) }, changeItemInObject: function(){ this.setData({ 'object.text': 'changed data' }); }, 无奈自己写的时候还是会遇到不能解决的…
根据下标修改数组中的key: var id = e.target.id//根据点击不同的view获取对应的id值 var str = "isChecked[" + id + "]"//重点在这里,组合出一个字符串 this.setData({ [str]: false//用中括号把str括起来即可 }) 1循环索引: <view wx:for="{{items}}" wx:for-index="index" wx:for…
对于setData普通数据类型而言,没什么讲究 但是对于数组而言,再直接修改一个完整的数组显得有些多余,首先写着不简易,其次效率很是滴. 比如 你都能觉得复杂,官方肯定是有对应的优化的. 官方demo Page({ data: { array: [{text: 'init data'}], }, changeItemInArray: function() { this.setData({ 'array[0].text':'changed data' }) } }) 但是如果那个索引0是动态的,就…
如果你完全符合微信介绍的setData使用说明的情况下,发现视图层没有更新,你可以看看我的这种情况. 使用setData的时候,修改的是data中一个对象的值,然后这个对象里面第一层不能含有 number 类型 例如 this.setData({ obj:{ key1:1 } }) 这样就会出问题,视图层并不会渲染出来 但是如果是第二层或更深时,是可以渲染出来的. this.setData({ obj:{ obj1:{ key1:1 } } }) 这样就可以. 如果遇到这样的问题,可以试一下将n…
list: [ { id: , mode: , src: ' }, { id: , mode: , src: ' }, { id: , mode: , src: ' } ], onDelete(e) { var no = Number(e.currentTarget.dataset.index); console.log(no) var that = this wx.showModal({ title: '提示', content: '您确认删除该图片和描述信息吗?确定将删除图片和描述信息',…
注意: 直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致 仅支持可以JSON化的数据 单次设置的数据不能超过1024KB,尽量避免一次设置过多的数据 不要把data中的任何一项的value设为undefined,否则这一项将不能被设置,可能会有潜在的问题 代码示例: Page({ /** * 页面的初始数据 */ data: { value:"初始值" //定义一个变量value,赋值为:“初始化” }, /** * 生命周…
setdata传递动态数据值必须为对象(只能是key:value) 语法如下 this.setData({ filter: 1212 }) 如果setdata要传递数组呢? 首先相到的是 this.setData({ filter.a: 12 filter.b: 32 }) 这样回报语法错误 既然语法规定不能在里面写数组,那就把数组定义到外面 filter.selectArea1 = 1, filter.selectArea2 = 2, filter.selectArea3 = 3, this.…
利用setData局部刷新列表 当列表管理加载到第几页时,这个list的数据有十几条的,如果重新setData的话就要重新刷新和渲染列表, 这是个比较麻烦的事,当数据量大时,就会造成白屏, 这时就要局部刷新列表,而且大量数据使用setData是有性能影响的. 这时就要进行局部刷新了 比如:分页加载,删除某一条记录,这时就要重新加载列表,回到第一页,当频繁操作删除时,就比较恶心了 这时我们可以利用标记,和隐藏记录 通过点击获取列表的索引index,进行删除请求成功后将其隐藏即可,不用全部刷新列表,…