Ich kann keine bidirektionale berechnete Eigenschaft in Kombination mit vuex erhalten, um zu arbeiten.Vue.js 2: Cant useTwo-Way Berechnete Eigenschaft in Kombination mit vuex
Wenn es Eingabeänderungen gibt, möchte ich getIsUnsavedData
auf "true" setzen und die Änderungen in eine neue Variable "$store.state.authenticatedUser.changedData
" "kopieren". Nach einer Änderung möchte ich den Wert get()
seinen Wert von $store.state.authenticatedUser.changedData
anstelle von $store.state.authenticatedUser.data
, um die Änderung anzuzeigen.
Am Anfang funktioniert alles wie erwartet. Wenn Eingaben geändert werden, wird der geänderte Wert in der Eigenschaft $store.state.authenticatedUser.changedData
repliziert. Der getIsUnsavedData
Wert ändert sich in wahr und das get() verweist auf die replizierten Daten. Es gibt nur einen Fehler. Plötzlich ändert sich die berechnete Eigenschaft nicht, obwohl der vuex-Speicher korrekt aktualisiert wird. Die set()
Funktion wird immer noch aufgerufen, aber die get()
nicht.
<ui-textbox @change="valueChanged" v-model="userName"></ui-textbox>
// ...
computed: {
userName: {
get() {
return this.$store.getters.getIsUnsavedData ? this.$store.state.authenticatedUser.changedData.name : this.$store.state.authenticatedUser.data.name
},
set(value) {
this.$store.commit('setChangedUserData', {
key: 'name',
value: value
})
}
}
},
methods: {
valueChanged() {
this.$store.commit('setUnsavedState', true)
}
},
// ....