uni-app 左右联动组件上方有元素导致联动错误 - StarLee 商品列表外卖列表联动数据问题

发布于 1周前 作者 nodeper 来自 Uni-App

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>

此示例展示了如何设置页面结构、样式和逻辑,确保左右联动组件正常工作,同时考虑到上方元素对布局的影响。注意,实际项目中需要根据后端接口和数据结构做相应调整。

回到顶部