uni-app鸿蒙下picker-view的@change事件不触发
uni-app鸿蒙下picker-view的@change事件不触发
代码示例
<picker-view :indicator-style="indicatorStyle" :value="selectedValue" [@change](/user/change)="wrapperChange">
<picker-view-column :style="pvcStyle">
<view class="g-dp-ctt-wp-item" v-for="(item,index) in years" :key="index">{{item}}年</view>
</picker-view-column>
<picker-view-column :style="pvcStyle">
<view class="g-dp-ctt-wp-item" v-for="(item,index) in months" :key="index">{{dateFormate(item)}}月</view>
</picker-view-column>
<picker-view-column :style="pvcStyle">
<view class="g-dp-ctt-wp-item" v-for="(item,index) in days" :key="index">{{dateFormate(item)}}日</view>
</picker-view-column>
</picker-view>
问题描述
picker-view-column
如果是三个以下的话无法触发 change
事件,如果是三个以上的话会滚动前面的选项会触发,但是滚到最后一项也不会触发,就是说永远取不到最后一个选项。
更多关于uni-app鸿蒙下picker-view的@change事件不触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
你好,经过测试,没有复现你说的问题,你使用的是哪个版本?或者是你能够提供一下更完整的代码吗?
更多关于uni-app鸿蒙下picker-view的@change事件不触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
版本是4.43.2024122419-alpha
在uni-app中,如果你在鸿蒙系统上遇到picker-view
组件的@change
事件不触发的问题,可能是由于系统兼容性问题或者组件使用不当导致的。下面是一个标准的picker-view
组件使用示例,以及如何在其中监听@change
事件的代码示例。你可以参考这个示例来排查和解决问题。
示例代码
1. 在页面的模板部分(.vue
文件)
<template>
<view class="container">
<picker-view :value="pickerValue" @change="onPickerChange">
<picker-view-column>
<view v-for="(item, index) in columns[0]" :key="index">{{ item }}</view>
</picker-view-column>
<picker-view-column>
<view v-for="(item, index) in columns[1]" :key="index">{{ item }}</view>
</picker-view-column>
<!-- 根据需要添加更多列 -->
</picker-view>
</view>
</template>
2. 在页面的脚本部分(.vue
文件)
<script>
export default {
data() {
return {
pickerValue: [0, 0], // 初始选中值,对应列和行的索引
columns: [
['选项1-1', '选项1-2', '选项1-3'],
['选项2-1', '选项2-2', '选项2-3']
]
};
},
methods: {
onPickerChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value);
this.pickerValue = e.detail.value;
// 根据需要处理选择改变逻辑
}
}
};
</script>
3. 在页面的样式部分(.vue
文件)
<style>
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
picker-view {
width: 300px;
height: 200px;
}
</style>
排查步骤
- 确认事件绑定:确保
@change
事件已经正确绑定到picker-view
组件上。 - 检查数据:确保
columns
和pickerValue
的数据格式正确,且pickerValue
的初始值在columns
的有效范围内。 - 控制台日志:在
onPickerChange
方法中添加console.log
语句,检查事件是否被触发。 - 系统兼容性:查看uni-app和鸿蒙系统的相关文档,确认是否有已知的兼容性问题。
- 简化测试:尝试在一个简单的项目中只使用
picker-view
组件,看是否能复现问题,以排除其他代码的干扰。
如果以上步骤仍然无法解决问题,建议查阅uni-app的官方社区或提交issue寻求官方支持。