私はコンポーネントTopBar.vue
を持っており、モーダル(子コンポーネントFeedback.vue
)を開こうとしています。Vue.jsコンポーネントデータ値を子コンポーネントに渡す
showFeedbackModal
プロパティを両方のコンポーネントにバインドするにはどうすればよいですか?
私はあなたが@click="showFeedbackModal = true
で<a>
タグをクリックすると、値true
が<feedback>
コンポーネントに渡されると、モーダルが示されているように、それを作りたいです。
TopBar.vue(メイン)
<template>
<div>
<section class="top-bar level">
<div class="level-left">
...
<ul class="level-item">
<li><a @click="showFeedbackModal = true"><i class="fa fa-envelope-open-o" aria-hidden="true"></i> Beta Feedback</a></li>
</ul>
</div>
...
</section>
<feedback :showFeedbackModal="showFeedbackModal"></feedback>
</div>
</template>
<script>
export default {
data() {
return {
showFeedbackModal: false
}
}
}
</script>
Feedback.vue(モーダル)
<template>
<div>
<div v-if="showModal" class="modal is-active">
<div class="modal-background" @click="showModal = false"></div>
<div class="modal-content">
<div class="box">
This is the feedback content
</div>
</div>
<button class="modal-close" @click="showModal = false"></button>
</div>
</div>
</template>
<script>
export default {
props: ['showFeedbackModal'],
data() {
return {
showModal: false
}
},
beforeMount() {
this.showModal = this.showFeedbackModal;
}
}
</script>
AGH。とても近い。意味あり。私はそれを試してみましょう。 –
モーダルが表示されます。しかし、閉じるボタンやモーダルバックグラウンドをクリックして閉じようとするとエラーが出ます: '親コンポーネントが再レンダリングされるたびに値が上書きされるので、プロップを直接変更しないでください。代わりに、小道具の値に基づいてデータまたは計算されたプロパティを使用します。プロットが変更されている: "showModal" ' –
イベントを送出し、親コンポーネントにデータ操作を処理させる必要があります。私の編集を参照してください。 – thanksd