在3.1.2版本的更新日志中这么一条:App平台、H5平台 优化 dataset 获取逻辑,完善非 string 类型支持。
更新到3.1.2版本后发现在App平台、H5平台标签自定义属性识别上发生了变化。
<template>
<view class="content">
<image class="logo" src="/static/logo.png" :data-testData="testData" :data-testdata="testData" @click="clickTest"></image>
<view class="text-area">
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
testData: '测试数据'
}
},
onLoad() {
},
methods: {
clickTest(e) {
console.log('e:', e);
}
}
}
</script>
新建一个项目,使用uni-app默认模板,在image标签上分别绑定testData和testdata两个自定义属性,在点击事件中输出这个标签的属性。在过去的版本中这两种命名会被识别为同一个自定义属性,e.currentTarget.dataset下只会有一个属性名为testdata的自定义属性;在3.1.2版本中e.currentTarget.dataset下会有testData和testdata两个自定义属性。目前这种区别只存在于App平台和H5平台,微信小程序平台的表现和之前版本一致e.currentTarget.dataset下只会有一个属性名为testdata的自定义属性。
如果在之前开发App、H5的过程中使用了标签自定义属性并且属性名中包含了大写字母,在3.1.2版本下就会出现获取不到这个自定义属性的bug(因为自定义属性名发生了变化),如果代码还需要编译到其他平台则需要调整属性名不包含大写字母或者使用条件编译。
目前仅测试了App平台、H5平台和微信小程序三个端,希望官方能明确一下这部分的平台差异,当然最好是能保持各个平台的表现一致。