Hi,
I’m using Framework7 v2 with Framework7-vue v2. I have a virtual list, which contains an icon to check in an entry. After clicking that icon, the saved data in the items property of the virtual list is updated correctly, but the icon doesn’t update.
Here’s my code:
<template>
<f7-page>
<f7-list
virtual-list
media-lst
:virtual-list-params="{ items: Tickets, height: 52, renderExternal: renderExternal }"
>
<ul>
<f7-list-item :id="item.ticket_id"
v-for="(item, index) in vlData.items"
:key="index"
:style="`top: ${vlData.topPosition}px`"
:title="item.name"
:after="item.nr"
:checked="item.checkedIn"
>
<div slot="content" @click="checkin(item, index)">
<i class="far fa-check-square" v-if="item.checkedIn"/>
<i class="far fa-square" v-else/>
</div>
</f7-list-item>
</ul>
</f7-list>
</f7-page>
</template>
<script>
export default {
name: 'Teilnehmerliste',
data() {
return {
vlData: {},
vl: {},
Tickets: [
{
"checkedIn": false,
"nr": "123451",
"name": "ABC"
},
{
"checkedIn": false,
"nr": "123452",
"name": "DEF"
},
{
"checkedIn": false,
"nr": "123453",
"name": "GHI"
}
]
};
},
methods: {
renderExternal(vl, Tickets) {
this.vlData = Tickets;
},
checkin(item, index) {
const self = this;
const app = this.$f7;
app.dialog.confirm('Checkin ' + item.name , "Checkin", function () {
item.checkedIn = true;
let vl = self.$f7.virtualList.get();
vl.domCache = {};
vl.update();
}, function () {
item.checkedIn = false;
});
}
}
}
</script>
Any idea, what I’m doing wrong?