我是Vue的新手,正在开发一个FAQ列表组件,可以在点击问题时切换答案。 我不确定如何使用Vue组件/模板切换类。
另外,在数据(faq_list)中使用show属性是一个很好的方法吗?
以下代码。
<div id="app">
<faqs :list="faq_list" :active.sync="active"></faqs>
<pre> {{$data| json}} </pre>
</div>
<template id="faq-template">
<ol>
<li v-for="list_item in list">
<div class="question"> {{list_item.question}} </div>
<div v-if="toggleActive" @click='toggleActive(list_item)'>
{{list_item.answer}}
</div>
<strong @click="removeFaq(list_item.answer)">x</strong>
</li>
</ol>
</template>
Vue.component('faqs', {
props: ['list', 'active'],
template: '#faq-template',
methods: {
removeFaq: function(list_item){
this.list.$remove(list_item);
},
toggleActive: function(list_item) {
console.log(list_item.show);
list_item.show = !list_item.show;
}
}
});
new Vue({
el: '#app',
data: {
active: {},
'faq_list' : [
{ question: 'q01', answer: 'q1', show: false},
{ question: 'q02', answer: 'a2', show: false},
{ question: 'q03', answer: 'a3', show: false},
{ question: 'q04', answer: 'a4', show: false},
{ question: 'q05', answer: 'a5', show: false}
]
}
});
答案 0 :(得分:2)
<li v-for="list_item in list">
<div class="question" @click='list_item.show = !list_item.show'> {{list_item.question}} </div>
<div v-if="list_item.show">
{{list_item.answer}}
</div>
<strong @click="removeFaq(list_item)">x</strong>
</li>
您有v-if="toggleActive"
,但应该是v-if="list_item.show"
我将点击向上移动到问题div,以便您可以显示/隐藏div,否则一旦隐藏,您就无法点击它
简化@click='list_item.show = !list_item.show'
虽然您的工作也是:)
是否有错误的参数发送到删除功能(您希望list_item.answer
发送list_item