2017-02-11 2 views
0

Ich habe eine v-for-Schleife und wenn das Element innerhalb dieser Schleife angeklickt wird, möchte ich div # ein ausblenden und div # two anzeigen. Klicken Sie dann auf eine Schaltfläche in div # two, um div # eins wieder zu verbergen und anzuzeigen. Nur für diesen Listeneintrag.Zeigen und verbergen divs in v-für Listenelemente (Vue.js 2)

Vorlage:

<div v-for="slider in slideritems"> 
    <div v-if="!showEdit" @click="openEditor(slider)"> 
     Normal list item, click to show edit options 
    </div> 
    <div v-if="showEdit"> 
     <div @click="closeEditor(slider)">Close</div> 
     Edit options (if selected) 
    </div> 
</div> 

Scripts:

export default { 
    methods: { 
     openEditor(slider) { 
      slider.showEdit = true 
     }, 
     closeEditor(slider) { 
      slider.showEdit = false 
     } 
    } 
} 
+0

Sie haben nie eine 'closeEditor' Methode definiert - Sie haben zwei' openEditor' Methoden. War das nur ein Tippfehler in der Frage? Was ist deine eigentliche Frage? Funktioniert etwas nicht? – PatrickSteele

+0

Gut erkannt, es war ein Fehler beim Eintippen in SO, es behebt das Problem nicht. Ich habe meine Frage etwas aktualisiert. Ich möchte bestimmte Divs innerhalb eines Loop-Elements anzeigen und ausblenden. Aber nur für diesen Gegenstand. –

Antwort

2

Da Ihre Methoden, um das showEdit Mitglied des Slider-Objekts sind Spiegeln, ich glaube, Sie v-if zu slider.showEdit gebunden wollen, nicht nur showEdit:

<div v-for="slider in slideritems"> 
    <div v-if="!slider.showEdit" @click="openEditor(slider)"> 
     Normal list item, click to show edit options 
    </div> 
    <div v-if="slider.showEdit"> 
     <div @click="closeEditor(slider)">Close</div> 
     Edit options (if selected) 
    </div> 
</div> 

Hier ist eine funktionierende jsFiddle:

Verwandte Themen