Я создаю простой инструмент презентации, где я могу создавать презентации, называть их и добавлять/удалять слайды с Vue js и Vuex для управления состоянием приложения. Все идет отлично, но теперь я пытаюсь реализовать функцию, которая обнаруживает изменения в презентации (название изменено или добавлено слайдом/удалено) и пока не может найти правильное решение для него. Я просто приведу пример только для изменения названия для простоты. Сейчас в моем Vuex магазине у меня есть:Как обновить свойство компонента Vue при изменении состояния хранилища 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 запускается в другом компоненте, и я действительно не знаю, как выбрать событие «сохранить» внутри компонента презентации, я не могу обновить свою теневую презентацию. Любые мысли о том, как я могу реализовать такую функцию? Любая помощь будет очень оценена! Заранее спасибо!
Умное решение, не используемое для меня лично, но умное, тем не менее - хорошая работа! :) –
Большое спасибо! ;) –
Но для записи я пришел к этому с помощью двух товарищей по команде. Кредиты не все мои. –