javascript - Vue.js - 我的多 Accordion 菜单组件无法通过切换标志工作

标签 javascript vue.js

我正在使用Vue.我为我的测试用例创建了 MultiAccordion 组件。我想通过 status[index] 标志打开幻灯片。但这个组件不起作用。为什么这不起作用?

var MultiAccordion = {
    data: function() {
        return {
            items: [
                'cat',
                'dog',
                'bird',
            ],
            status: [],
        };
    },
    created: function() {
        for (let i = 0; i < this.items.length; ++i) {
            this.status.push(false);
        }
    },
    methods: {
        handleToggle: function(index) {
            this.status[index] = !this.status[index];
        },
    },
    template: `
    <ul>
        <li v-for="(val, index) in items">
            <button @click="handleToggle(index)">toggle</button>
            <div v-if="status[index]">
                {{ val }}
            </div>
        </li>
    </ul>
    `,
};

最佳答案

Due to limitations in JavaScript, Vue can not detect changes to an array when you assign value by index ,即以下内容不是响应式(Reactive)的:

this.status[index] = !this.status[index];

您必须使用Vue.set:

this.$set(this.status, index, !this.status[index])

或者使用拼接:

this.status.splice(index, 1, !this.status[index])

关于javascript - Vue.js - 我的多 Accordion 菜单组件无法通过切换标志工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53624232/

相关文章:

javascript - 在不显眼的 JavaScript 中,一旦您分离了内容和脚本,您如何处理添加内容的脚本?

JavaScript 数组大括号与方括号

javascript - 新 Node 缓冲区已经有数据了吗?

vue.js - nginx - 将 facebook/bots 代理到不同的服务器而不更改规范 URL

javascript - 我可以取消 Firestore 写入吗? (使用离线持久化)

Javascript - 通过带有标签的公共(public)值对对象数组进行分组

javascript - 在 vue-chart.js 中使用循环渲染标签和数据

api - 在 Vue 中安装时,Axios 数据不会转移到数据中

firebase - 使用 Firebase 托管部署 Vue.js 应用程序

javascript - 触发Vue函数更改某些组件字段时出现问题