You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js点击事件不符合预期 点击Vuetify下拉项仅展示选中书籍求助

核心问题说明

你当前使用全局的show2变量控制所有图书条目的显隐,所有遍历生成的Content组件共用这一个布尔值,所以一旦show2设为true,所有图书的详情卡片都会同时展示。

解决步骤

步骤1:修改数据定义

替换原来的show2变量,新增selectedBookId用来存储当前选中的图书ID:

// data 部分修改
data() {
  return {
    BASE_URL: "https://www.googleapis.com/books/v1/volumes",
    items: [],
    search: "",
    timerId: "",
    labeling: "Search For Book",
    show: false,
    // 删掉原来的show2: false
    selectedBookId: null, // 新增:存储选中的图书id
    imageSrc: "",
    showTitle: "",
    showDescription: "",
  };
},

步骤2:修改点击选中逻辑

点击某本图书时,只把当前图书的ID存到selectedBookId里:

// clickCard方法修改
clickCard(item, target) {
  console.log(item);
  console.log(target);
  this.show = false;
  this.selectedBookId = item.id; // 替换原来的this.show2 = true
},

步骤3:修改详情卡片的显隐判断

只有当前遍历的图书ID等于选中的ID时,才展示详情卡片:

<!-- 原来的Content标签修改v-show条件 -->
<Content v-show="item.id === selectedBookId" @load="updateCard(item, $event.target)">
  <!-- 原有插槽内容保持不变 -->
</Content>

步骤4:修改移除按钮逻辑

点击移除时清空选中的ID即可隐藏卡片:

<v-btn @click="selectedBookId = null">Remove</v-btn>

修改完成后,点击下拉选项里的某本图书,只会展示对应选中的那本的详情卡片。

内容的提问来源于stack exchange,提问作者jatin sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:06:03