プレゼンテーションを作成し、名前を付けたり、Vue jsやVuexでスライドを追加/削除したりしてアプリの状態を処理できるシンプルなプレゼンテーションツールを構築しています。すべてがうまくいっていますが、プレゼンテーションの変更(タイトルの変更やスライドの追加/削除)の変更を検出する機能を実装しようとしていますが、まだそれに適したソリューションを見つけることができませんでした。わかりやすくするためにタイトルの変更についてのみ例を挙げます。今私が持っている私のVuex店に:私は私のプレゼンテーションコンポーネントでVuexストアの状態が変更された場合、Vueコンポーネントのプロパティを更新する方法は?
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アクションが別のコンポーネントでトリガされているため、プレゼンテーションコンポーネント内で 'save'イベントを選択する方法がわからないため、シャドウプレゼンテーションを更新できません。どのように私はそのような機能を実装することができますか?どんな助けでも大歓迎です!前もって感謝します!
スマートな解決策、個人的には使えませんが、スマートにもかかわらず - 素敵な仕事です! :) –
ありがとうございました! ;) –
しかし、記録のために私は2人のチームメートの助けを借りてこれに来ました。クレジットはすべて私のものではありません。 –