javascript - Vue 组件切换

标签 javascript vue.js

我对 Vue 相当陌生,正在开发一个常见问题列表组件,该组件可以在单击问题时切换答案。 我不确定如何使用 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}
            ]
        }
    });

最佳答案

<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>
  1. 您有 v-if="toggleActive",但它应该是 v-if="list_item.show"

  2. 我将点击移至问题 div,以便您可以显示/隐藏该 div,否则一旦隐藏,您将无法单击它

  3. 简化的@click='list_item.show = !list_item.show',尽管你的也可以:)

  4. 向删除函数发送了错误的参数(您在需要 list_item 时发送了 list_item.answer

关于javascript - Vue 组件切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36875461/

相关文章:

javascript - 在clearTimeout之后它仍然是一个数字

vue.js - Microsoft Graph 在身份验证后记住用户

javascript - 点击事件带来单个用户的问题

javascript - 如何异步等待子组件中的事件? Vue-路由器

javascript - 使用 javascript 优雅地修改现有链接的参数

javascript - Highcharts 表单提交 var 不工作

javascript - 我可以使用哪些 highstock 选项来删除 xAxis 之间的内容

vue.js - Vue.js 转换的意外行为

javascript - Vue.js - 从过滤后的 scopedSlots 动态创建槽

javascript - 通过php在用户端显示服务器错误