PhenixGhost
PhenixGhost
  • 发布:2020-01-19 09:27
  • 更新:2020-12-16 20:30
  • 阅读:871

【报Bug】嵌套循环,内层循环元素id冲突,导致数据覆盖

分类:uni-app

详细问题描述

嵌套循环,内层循环的数据错乱,因默认生成的_i 属性冲突,导致已生成的数据被后面相同 _i 值的数据覆盖。浏览器中显示正常,在APP中错乱,Android和IOS中同样出现。  

[内容]

重现步骤

<view :key="'out'+oi" v-for="(out,oi) in 15">  
                <view :key="'inner'+ii" v-for="(inner,ii) in 15">  
                    外层索引:-{{oi}}--内层索引:{{ii}}  
                </view>               
</view>

[重现结果]

[结果]

猜测:_i 值的生成规律:
从根节点uni-view开始,从0递增,每到下一级子元素,增1;
对于循环生成的节点,_i的格式固定为 elementID-index

如上图,28-0 ... 28-* 是外层循环生成的 _i 值;

但是内存循环生成的 _i值格式为 elementID+index
循环索引值是直接拼接在元素id后的
如上图中的 30-1*

问题也就出现在内层循环元素的_i值上,

如28-1 节点下的内层循环元素 30-110 代表的是外层循环索引为1,内层循环索引为10的数据A;
而28-11节点下的内层循环元素30-110 代表的是外层循环索引为11,内层循环索引为0的数据B;
因此,导致A数据被B数据覆盖。

[期望]
内层循环的索引值也应以 id-index的方式拼接,如A数据为 30-1-10 ,B数据为30-11-0
数据能够正确展示。

2020-01-19 09:27 负责人:无 分享
已邀请:
PhenixGhost

PhenixGhost (作者) - 8080

这个bug有什么办法解决吗?不然v-for的元素个数不能超过10个,否则就会出现数据错乱问题。

PhenixGhost

PhenixGhost (作者) - 8080

期待解决方案

PhenixGhost

PhenixGhost (作者) - 8080

==========

3***@qq.com

3***@qq.com

解决了吗?

3***@qq.com

3***@qq.com

是不是设计如此?

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