Я использую библиотеку 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
также не обновляется.
Короче говоря, индекс иногда работает идеально, а иногда он принимает старый индекс в моей функции.
Если вам нужно больше кода, просто спросите меня, я буду рад предоставить его.