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

Vue/Quasar项目中如何删除V-for循环内指定的Section?

Vue/Quasar 实现指定section删除功能的修改方案

你当前的问题核心在于用数字类型的sections控制渲染,没法精准定位要删除的单个section,同时单个sectionName会导致所有输入框绑定同一值,得从模板和脚本两部分修改:

1. 模板部分修改

把遍历对象改成数组元素,给删除按钮传递当前section的索引,同时每个section绑定自己的输入值:

<template>
  <div v-for="(section, index) in sections" :key="index">
    <div class="row q-gutter-md">
      <q-input v-model="section.name" bottom-slots dense :label="labelText">
        <template v-slot:append>
          <q-btn flat dense icon="add" color="grey" @click="addNew" />
          <q-btn flat dense icon="delete" color="grey" @click="removeSection(index)" />
        </template>
      </q-input>
    </div>
  </div>
</template>

2. 脚本部分修改

将sections改为数组类型,初始化时添加一个默认section;removeSection接收索引参数,删除对应元素(保留至少一个section):

setup() {
  // 初始化数组,默认包含一个section
  const sections = ref([{ name: '' }]);
  const addNew = () => {
    // 新增section时往数组里push新对象
    sections.value.push({ name: '' });
  };
  const removeSection = (index) => {
    // 确保至少保留一个section
    if (sections.value.length > 1) {
      sections.value.splice(index, 1);
    }
  };
  return {
    sections,
    addNew,
    removeSection,
    // 记得返回labelText等其他需要的变量
    labelText: 'Section Name'
  };
}

关键说明

  • 用数组存储section数据,每个元素对应独立的输入值,避免多个输入框同步问题
  • 删除时判断数组长度,防止删到空状态,符合你“默认仅显示一次”的初始要求
  • 给删除按钮传递当前索引,精准定位要删除的section

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:30:58