Индекс в V-для не реагирует в составная часть - PullRequest
1 голос
/ 26 февраля 2020

Я использую библиотеку vuesax , и в этой библиотеке есть один компонент, называемый <vs-collapse> для разработки аккордеонов.

Я заполняю эти аккордеоны динамически, используя v-for

<vs-collapse accordion type="border">
    <vs-collapse-item v-for="(std, index) in stds" :key="'std'+std.id">
        <div slot="header" @click="loadStructure(index, std.id)">
            {{ std.std_roman }}
        </div>
    </vs-collapse-item>
</vs-collapse>

И при открытии аккордеона я вызываю функцию loadStructure(), принимающую index из v-for

export default {
    data() {
        return {
            stds: [],
            fees_types: [],
            fees_installments: [],
            current_open_index: null,
            current_std_open: null,
            fees_structure: []
        }
    },
    methods: {
        loadStructure(index, std_id) {
            if (this.current_open_index != index) {
                this.current_open_index = index;


                window.axios
                    .post("/api/fees/structure", {
                        std_id: std_id
                    }, {
                        headers: fetchAuthHeaders()
                    })
                    .then(response => {
                        if (true == isResponseValid(response, this.$vs)) {
                            this.fees_structure = response.data.data;
                        }
                    })

            } else {
                this.current_open_index = null;
            }
        }
    }
}

Теперь проблема заключается в том, что всякий раз, когда я нажимаю на любой аккордеон, соответствующий индекс иногда не обновляется в функции loadStructure(), следовательно, моя модель fees_installments также не обновляется.

Короче говоря, индекс иногда работает идеально, а иногда он принимает старый индекс в моей функции.

Если вам нужно больше кода, просто спросите меня, я буду рад предоставить его.

...