海中月是天上月
海中月是天上月
  • 发布:2019-08-01 11:52
  • 更新:2019-08-03 15:11
  • 阅读:935

【报Bug】picker组件中设置map组件的markers疑似发生神奇bug,官方大佬速速救我

分类:uni-app

详细问题描述

在uniapp环境下的同一个.vue文件中,使用了picker map组件,下面附件会上传.vue文件和模拟数据(文件选的管理员可见**),请大佬们仔细测试一下。
下面来描述一下我遇到的问题,请大佬们判断是否是一个bug:
当页面onload时 通过request获取map - markers 中的数据 然后this.markers = res.data.markers 这样设置好map的markers数据,到这里是没问题的
当我选择picker时触发了 @change = bindPickerChange 事件,bindPickerChange中改变了this.index(官网教程复制的代码,下面会附上.vue文件 可在文件中查看),当e.detail.value = 0 时无问题,此时allmarkers.length = 4 ,(解释一下这个allmarkers :allmarkers存储onload回来的数据,当页面onload时 allmarkers 的数据与 markers的数据是相同的,当picker时选择一个选项,这时候设置map 中的markers为allmarkers中的某一条数据.实在不明白请看代码,) 但是当e.detail.value != 0时触发了赋值语句 this.markers = arr , 此时allmarkers .length = 3, 删除了当前选择的选项,而且是选哪个删哪个,只要this.markers = arr 触发了赋值(赋值为空时不会删除), 下面我会附上一张打印图,希望大佬们能看懂,看不懂的地方请留言。感觉这是一个bug的可能性有10%(毕竟新手,不敢说80%)

打印图:

[windows版本号]
win 10企业版G

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

H5端

[运行端版本号]

2.1.3.20190723

  1. [项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

hbx创建的

[编译模式是老模板模式还是新的自定义组件模式?]

自定义组件模式 ,设置了这个,app端是自定义组件 H5端 ???
"app-plus" : {
"usingComponents" : true,

[可重现代码片段]

下面上传代码文件

联系方式

[QQ] 414674960@qq.com / 414674960

2019-08-01 11:52 负责人:无 分享
已邀请:
海中月是天上月

海中月是天上月 (作者) - 80后帅气IT男

如果大佬需要提供线上地址,我已经通过hbx打包好了H5放到线上了 地址是heb.wj2018.vip, 官方大佬留言 我私聊你测试账号~

海中月是天上月

海中月是天上月 (作者) - 80后帅气IT男

捞一把。。。

海中月是天上月

海中月是天上月 (作者) - 80后帅气IT男

日常捞一把, 看看官方什么时候能看到帖子#32

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

你在projectData函数写了这个

this.markers = rsArr  
this.allmarkers = rsArr

尽量不要这么写这么写

换成下面这种写法

this.markers = rsArr.splice() //复制一份赋值给markers  
this.allmarkers = rsArr

我看你发的demo里面第一个选项应该是要显示全部marker,这时候也复制一下不要直接等于
this.markers = this.allmarkers (×)
this.markers = this.allmarkers.splice() (✓)

  • 海中月是天上月 (作者)

    额 搞不懂为何要用数组的splice方法 深浅拷贝? 懵逼中, 不过谢谢大佬,我去试试看

    2019-08-08 11:48

  • 海中月是天上月 (作者)

    小姐姐 你确定是arr.splice()吗? 特意去查了下 splice会改变原数组, 而且splice(index, num) 参数都是必填的,它的返回是被删除的数组。 你这样写我的markers不就是空了吗? 地图上没有办法显示标记点了。 好像不对吧

    2019-08-12 09:01

  • DCloud_uniCloud_WYQ

    回复 海中月是天上月: 首先我不是小姐姐,然后这个不是splice应该是slice,是我写错了,复制数组的方法很多自己看着用就行

    2019-08-12 10:01

  • 海中月是天上月 (作者)

    回复 DCloud_uniCloud_WYQ: 好的老哥(失望.jpg),已经OK了 this.markers = rsArr 的地方换成了 this.markers = [...rsArr],亲测已经OK了, 多谢老哥(wsm不是小姐姐.尴尬.jpg)

    2019-08-13 08:20

该问题目前已经被锁定, 无法添加新回复