详细问题描述
嵌套循环,内层循环的数据错乱,因默认生成的_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
数据能够正确展示。