小程序模板网

微信小程序中如何使用setData修改数组或对象中的某一参数

发布时间:2018-04-23 11:12 所属栏目:小程序开发教程

本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值。这些值在微信小程序中都需要使用一个名为setData的方法,而这个方法是通过键值对的形式对数据进行修改,setData({ 参数名: 值 }); 
既然知道是以键值对的方式进行传参,那么我们在修改数组和对象的时候就直接将要修改的参数名写成对应字符串就可以了,然后使用[]将字符串括起来,这就告诉编译器这是指向的是该字符对应的实际位置,如下:

 

				
  1. var authority = 'buttonGroup.authority'
  2. that.setData({
  3. [authority]: parseInt(level)
  4. })
 

				
  1. var printPrice = "item["+i+"].print_price";
  2. this.setData({
  3. [printPrice]: e.detail.value
  4. });

微信小程序地图api开发真机预览崩溃

 

前言  微信小程序开发地图api中遇到了一个坑,ide上跑起来没有问题,放到真机上预览就像抽了一样乱蹦乱跳,然后crash..  背景  小程序中有图标1记录了当前用户的位置,现在还要一个图标2记录地图中心的位置,用户可以移动地图,将他想要选择的目的地移动到地图的中心就好了  主题  1.那么先看看布局,布局很简单,如下见

 

					
  1. class="map-view">
  2. id="myMap" latitude="{{latitude}}" longitude="{{longitude}}" controls="{{controls}}" show-location bindregionchange="regionchange" bindcontroltap="controlstap" style="width: {{mapWidth}}; height: {{mapHeight}};top: {{mapTop}}"/>
  3.  

2.监听用户移动的地图的方法小程序也给出了,布局中的bindregionchange就是,重写下:

 

					
  1. regionchange(e) {
  2. // 地图发生变化的时候,获取中间点,也就是用户选择的位置
  3. if (e.type == 'end') {
  4. var that = this;
  5. this.mapCtx.getCenterLocation({
  6. success: function (res) {
  7. that.setData({
  8. longitude: res.longitude
  9. , latitude: res.latitude
  10. })
  11.  
  12. // that.setData({
  13. // long: res.longitude
  14. // , lat: res.latitude
  15. // })
  16.  
  17. }
  18. })
  19. }

看似也没什么毛病,布局中的经度(latitude)纬度(longitude)就是记录中心位置的,我移动地图的话重置经纬度也应该在监听地图移动的实现,IDE上跑起来也流畅,然真机上预览就出问题了,乱动一通后就崩溃了。  至今也没想明白问题出在哪儿,现在想了一个办法,在page中data设置两个变量long,lat来记录中心位置,也就是代码片段中注释的部分,真机上跑起来就没问题了。



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/23900.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询