Vue:为什么只有最后一个对象只关联到 for 循环中的每个模态

Vue: Why only the last object is only associated to every modal which is in for loop

这是我第一次使用模态组件。在对象数组的 for 循环中,我还添加了一个模态组件“Add Item”。模态中显示按钮中的 v:onClick="showSectionID" 函数应该只控制台记录打开关联模态的对象的 ID,然后单击它各自的显示按钮。但是,无论我从任何关联模式中单击“显示”按钮,它都会给出最后一个对象的 ID。

为了测试,我删除了整个模式,只保留了 SHOW 按钮,在这种情况下,它给了我正确的 ID。我真的无法弄清楚模态中的 s 出了什么问题,并在互联网上搜索了多个来源以查看类似的解决方案但找不到。见代码:

<div v-for="(section) in allDataObject['Section']" :key="section['uuid']">          
   <h4>Section Name: {{ section["sectionName"] }}</h4>
   <h4>Section Description: {{ section["sectionDescription"] }}</h4>
       <template>
         <div>
           <b-button @click="modalShow = !modalShow">Add Item</b-button>
             <b-modal v-model="modalShow">Fill form to add an item !
           <button v-on:click="showSectionID (section['uuid'])">SHOW</button>                         
             </b-modal>       
         </div>
       </template>
</div>

在您的代码中,您正在为 for 循环中的每个部分创建一个模态组件。
如果您所有的模态框都显示在屏幕上,我不会感到惊讶,但您看到的是最后一个,因为它位于所有其他模态框之上。但这也取决于模态的实现方式。

我建议您将模态模板移到 for 循环之外,并更改您存储在组件数据中的内容,以便您知道要在模态中显示哪个部分。

假设您的 data() 将如下所示:

data() {
    return {
        modalVisible: false,
        modalSectionUUID: null
    }
}

然后你可以创建两个方法来显示和隐藏模态:

methods: {
    showModal(sectionUUID) {
        this.modalVisible = true;
        this.modalSectionUUID = sectionUUID;
    },
    hideModal() {
        this.modalVisible = false;
        this.modalSectionUUID = null;
    }
}

现在,您的模板最终将如下所示:

<b-modal v-model="modalVisible">Fill form to add an item !
    <button v-on:click="showSectionID(modalSectionUUID)">SHOW</button>                         
</b-modal>
<div v-for="(section) in allDataObject['Section']" :key="section['uuid']">          
    <h4>Section Name: {{ section["sectionName"] }}</h4>
    <h4>Section Description: {{ section["sectionDescription"] }}</h4>
    <template>
        <div>
            <b-button @click="showModal(section['uuid'])">Add Item</b-button>
        </div>
   </template>
</div>