用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 教程 查看内容

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

Rolan 2017-8-8 00:03

本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array或者是对象中object.item的值。这些值在微信小程序中都需要使用一个名为setData的方法,而这个方法是通过键值对的形式对数 ...

本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如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}}"/>

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. // that.setData({
  12. // long: res.longitude
  13. // , lat: res.latitude
  14. // })
  15. }
  16. })
  17. }

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

附上小程序地图api链接: 
https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html


鲜花
鲜花 (1)
鸡蛋
鸡蛋

刚表态过的朋友 (1 人)

分享至 : QQ空间
收藏
来自: csdn

相关阅读

  • OmegaPenguin 2018-2-7 17:15
    setData()要的是个对象参数,不应该直接按data里的格式写就好了吗。。
  • 陈炸弹 2017-8-8 15:23
    6666