@metalsadman thank you.
I found another solution.
I create the local buffer for v-model of the QPopupEdit. In @show event I fill this buffer from Vuex data and in @save event I invoke REST Api “update” method and change Vuex data. It seems so much easier. I have code like this:
<q-table ... :data="ds">
...
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="desc" :props="props">
{{ props.row.email }}
<q-popup-edit v-model="popupEditData"
@show="() => showPopup(props.row, 'name')"
@save="(val, initval) => onUpdateDocument(val, props.row, 'name')"
buttons>
<q-input v-model="popupEditData" counter/>
</q-popup-edit>
</q-td>
...
</q-tr>
</template>
...
</q-table>
...
export default {
data() {
return {
popupEditData: '',
};
computed: {
...mapState({
ds: state => state.ds.dsCustomers
}),
methods: {
...mapActions({
getDocuments: 'ds/getCustomers',
updateDocument: 'ds/updateCustomer',
}),
showPopup(row, col) {
this.popupEditData = row[col];
},
onUpdateDocument(val, row, col) {
this.setLoading(true);
const updatedRow = extend({}, row);
updatedRow[col] = val;
const res = this.updateDocument(updatedRow);
res.then((response) => {
...
this.getDocuments();
})
.catch((err) => {
...
})
.finally(() => {
this.setLoading(false);
});
},