uni-app 左右联动组件上方有元素导致联动错误 - StarLee 商品列表外卖列表联动数据问题
uni-app 左右联动组件上方有元素导致联动错误 - StarLee 商品列表外卖列表联动数据问题
1 回复
针对你提到的 uni-app
左右联动组件上方有元素导致联动错误的问题,通常这种联动组件(如商品列表与外卖列表)需要确保事件触发和数据更新是同步且正确的。以下是一个简单的代码示例,展示如何在 uni-app
中实现左右联动组件,并处理上方元素可能带来的干扰。
示例代码
1. 页面结构 (template)
<template>
<view>
<!-- 上方元素 -->
<view class="top-element">顶部广告</view>
<!-- 左侧列表 -->
<scroll-view scroll-y="true" class="left-list" @scrolltolower="loadMoreLeft">
<view v-for="(item, index) in leftList" :key="index" @click="selectLeftItem(item.id)">
{{ item.name }}
</view>
</scroll-view>
<!-- 右侧内容区域 -->
<scroll-view class="right-content">
<view v-for="(item, index) in rightList" :key="index">
{{ item.name }} - {{ item.description }}
</view>
</scroll-view>
</view>
</template>
2. 样式 (style)
<style scoped>
.top-element {
height: 100px; /* 根据实际高度调整 */
background-color: #f0f0f0;
text-align: center;
line-height: 100px;
}
.left-list {
width: 30%;
float: left;
height: calc(100vh - 100px); /* 减去顶部元素高度 */
overflow-y: auto;
}
.right-content {
width: 70%;
float: right;
height: calc(100vh - 100px); /* 减去顶部元素高度 */
overflow-y: auto;
}
</style>
3. 逻辑 (script)
<script>
export default {
data() {
return {
leftList: [],
rightList: [],
selectedLeftItemId: null,
};
},
methods: {
selectLeftItem(id) {
this.selectedLeftItemId = id;
// 根据id更新rightList
this.updateRightList(id);
},
updateRightList(id) {
// 假设根据id从服务器获取数据
// this.rightList = fetchRightListDataFromServer(id);
// 这里用静态数据模拟
this.rightList = this.leftList.find(item => item.id === id).items;
},
loadMoreLeft() {
// 加载更多左侧列表数据
},
},
mounted() {
// 初始化左侧列表数据
// this.leftList = fetchLeftListDataFromServer();
// 这里用静态数据模拟
this.leftList = [
{ id: 1, name: '分类1', items: [{ name: '商品1-1', description: '描述1-1' }, ...] },
{ id: 2, name: '分类2', items: [{ name: '商品2-1', description: '描述2-1' }, ...] },
// 更多分类...
];
// 默认选择第一个分类
this.selectLeftItem(this.leftList[0].id);
},
};
</script>
此示例展示了如何设置页面结构、样式和逻辑,确保左右联动组件正常工作,同时考虑到上方元素对布局的影响。注意,实际项目中需要根据后端接口和数据结构做相应调整。