在我的应用程序中,我使用与vuex的双向绑定:
messageContent: {
get () {
return store.getters.messageContent
},
set (value) {
store.commit('updateContent', value)
}
},
<b-form-textarea id="content" v-model="messageContent" :rows="3"></b-form-textarea>
<b-button size="sm" variant="primary" value="Cancel" aria-label="Cancel" @click.prevent='onCancel'>
<i class="fa fa-times" aria-hidden="true"></i> Cancel
</b-button>
由于支柱的突变已经发生,如果我点击取消编辑按钮:
methods: {
onCancel () {
this.isEdit = !this.isEdit
}
}
如何回滚?
我认为一种方法是解决方案,但我不确定如何使用vuex实现它。
答案 0 :(得分:1)
我认为你需要像这个例子中的东西,你需要清楚地区分什么是旧内容 - 旧状态和新内容 - 新状态。有些东西,因为这是简化的,但却是有效的例子。
var store = new Vuex.Store({
state: {
savedContent: 'Previous content'
},
mutations: {
saveContent (state, value) {
state.savedContent = value
}
}
})
new Vue ({
el: '#app',
store,
data: {
newContent: store.state.savedContent
},
methods: {
save () {
this.$store.commit('saveContent', this.newContent)
},
cancel () {
this.newContent = this.$store.state.savedContent
}
}
})
&#13;
<div id="app">
<textarea v-model="newContent"></textarea><br>
<button @click="save">save</button>
<button @click="cancel">cancel</button>
</div>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vuex"></script>
&#13;