實現原理:爲每一個列表項建立一個單獨的組件,而後每一個組件均可以擁有本身的isActive標誌。app
<div id="app"> <div v-for="item in items"> <toggle-list-item :item="item"></toggle-list-item> </div> </div> <template id="list-item"> <div> <div> {{item.text}} </div> <button @click="toggle()">show</button> <div v-show="isActive" class="item-desc"> {{item.desc}} </div> </div> </template>
#js Vue.component('toggle-list-item', { template: '#list-item', props: ['item'], methods: { toggle() { this.isActive = !this.isActive; } }, data() { return { isActive: false } }, }) new Vue({ el: '#app', data: { items: [{ text: 'foo', desc: 'foo desc' }, { text: 'bar', desc: 'bar desc' }, { text: 'baz', desc: 'baz desc' }] } });