我有一個組件TopBar.vue
,我試圖打開一個模塊(一個子組件Feedback.vue
)。Vue.js將組件數據值傳遞給子組件
如何在兩個組件之間綁定showFeedbackModal
屬性?
我想讓它這樣,當您點擊與@click="showFeedbackModal = true
值true
被傳遞到<feedback>
組件和模態顯示在<a>
標籤。
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>
哎。很近。這是有道理的。讓我試試看。 –
所以模態會出現。但是當我嘗試關閉時(通過單擊關閉按鈕或模態背景),我得到一個錯誤:'避免直接改變一個道具,因爲只要父組件重新渲染,該值就會被覆蓋。相反,使用基於道具值的數據或計算屬性。 Prop正被突變:「showModal」' –
您應該發出一個事件並讓父組件處理數據操作。看我的編輯。 – thanksd