2017-02-11 15 views
0

私はv-forループを持っており、そのループ内の項目をクリックするとdiv#1とdiv#2を非表示にします。次にdiv#2のボタンをクリックしてdiv#1を非表示にして再度表示します。そのリスト項目のみ。v-forリスト項目(Vue.js 2)内のdivを表示/非表示

テンプレート:

<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> 

スクリプト:

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

'closeEditor'メソッドは決して定義されていません。あなたは2つの' openEditor'メソッドを持っています。それはちょうど質問のタイプミスですか?また、あなたの実際の質問は何ですか?何か動作していないのですか? – PatrickSteele

+0

よく斑点を付けられましたが、実際にそれを入力する際に​​エラーが発生しましたが、実際に問題は解決されません。私は少し質問を更新しました。ループアイテム内の特定のdivを表示して非表示にしたいしかし、そのアイテムだけです。 –

答えて

2

あなたの方法は、スライダオブジェクトのshowEditメンバーを反転しているので、私はあなたがslider.showEditにバインドv-ifだけではなく、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> 

ここにjsFiddleがあります:https://jsfiddle.net/psteele/wn1npgqu/