【发布时间】:2020-06-24 09:37:24
【问题描述】:
我正在使用 Quasar 框架的 Q-Popup-edit 和 Vuex Store 处理表格。
它正确填充。但是,当我更改表上的值时,它会恢复到当前值并且根本没有反映。
这是我的桌子:
tableData: [
{
'FrozenYogurt' : {
'topping': 'strawberry'
},
'FrozenYogurtPart2' : {
'topping2': 'strawberry2'
}
},
{
'IceCreamSandwich' : {
'baseFlavor': 'chocolate',
'somethingAgain': 'chocolatiest'
}
},
{
'CreamPuff' : {
'sourceBakery': 'Starbucks'
}
}
]
我的 Vuex 突变:
mutations: {
saveUpdatedData (newVal) {
console.log('inside MUTATION saveUpdatedData')
state.tableData.length = 0
state.tableData.push(newVal)
}
}
并使用双向计算属性(get/set)来填充表格:
tableRows: {
get: function () {
console.log('inside GET')
return this.$store.state.tableData.reduce((acc, item) => {
Object.keys(item).forEach(name => {
Object.keys(item[name]).forEach(property => {
acc.push({ name, property, value: item[name][property]})
})
})
return acc
}, [])
},
set: function (newValue) {
console.log('inside SET')
this.$store.commit('saveUpdatedData', newValue)
}
}
但是set() 函数根本没有被调用。
最后是我的 Vue 代码:
<q-table
:data="tableRows"
:columns="columns"
:rows-per-page-options="[]"
row-key="name" wrap-cells>
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="desc" :props="props">
{{ props.row.name }}
<q-popup-edit v-model="props.row.name" buttons>
<q-input v-model="props.row.name" dense autofocus counter ></q-input>
</q-popup-edit>
</q-td>
<q-td key="property" :props="props">
{{ props.row.property }}
<q-popup-edit buttons v-model="props.row.property">
<q-input type="textarea" v-model="props.row.property" autofocus counter @keyup.enter.stop></q-input>
</q-popup-edit>
</q-td>
<q-td key="value" :props="props">
{{ props.row.value }}
<q-popup-edit v-model="props.row.value" buttons>
<q-input v-model="props.row.value" dense autofocus ></q-input>
</q-popup-edit>
</q-td>
</q-tr>
</template>
</q-table>
如何使更改反映在 vuex 商店中??
这里的代码笔: https://codepen.io/kzaiwo/pen/BaNYbZZ?editors=1011
救命!
【问题讨论】:
标签: javascript node.js vue.js vuex quasar-framework