我正在构建一个简单的演示工具,我可以在其中创建演示文稿、命名它们并使用 Vue js 和 Vuex 添加/删除幻灯片以处理应用程序状态。一切都很顺利,但现在我正在尝试实现一项功能,该功能可检测演示文稿中的更改(标题更改或幻灯片添加/删除),但尚未找到合适的解决方案。为简单起见,我将仅举有关标题更改的示例。现在在我的 Vuex 商店中,我有:
const state = {
presentations: handover.presentations, //array of objects that comes from the DB
currentPresentation: handover.presentations[0]
}
在我的演示组件中,我有:
export default {
template: '#presentation',
props: ['presentation'],
data: () => {
return {
shadowPresentation: ''
}
},
computed: {
isSelected () {
if (this.getSelectedPresentation !== null) {
return this.presentation === this.getSelectedPresentation
}
return false
},
hasChanged () {
if (this.shadowPresentation.title !== this.presentation.title) {
return true
}
return false
},
...mapGetters(['getSelectedPresentation'])
},
methods: mapActions({
selectPresentation: 'selectPresentation'
}),
created () {
const self = this
self.shadowPresentation = {
title: self.presentation.title,
slides: []
}
self.presentation.slides.forEach(item => {
self.shadowPresentation.slides.push(item)
})
}
}
到目前为止,我所做的是在创建组件时创建演示文稿的影子副本,然后通过计算属性比较我感兴趣的属性(在本例中为标题)并返回 true 如果什么都不一样。这适用于检测更改,但我想要做的是能够在保存演示文稿时更新阴影演示文稿,到目前为止我还没有这样做。由于在另一个组件中触发了 savePresentation 操作,而且我真的不知道如何在演示组件中选择“保存”事件,因此我无法更新我的影子演示。关于如何实现此类功能的任何想法?任何帮助将不胜感激!提前致谢!