我在Vue中實現動態模態組件時遇到問題。帶Vue的多個模態組件
我遵循顯示從數據庫獲取的一組數據的一種常見方法是通過迭代db結果的每一行來轉儲HTML表格元素中的每一行。像這樣:
正如你在截圖中看到的,每一行都有一個或多個由循環動態生成的按鈕。 爲了將一個模式組件綁定到每個按鈕(比如這個場景中的Remove按鈕),我做了這樣的事情。
HTML:
<div id="app">
<?php foreach($result as $x): ?>
<modal v-if="showModal">I am Modal $x</modal>
<btn @trigger="onShowModal">Button $x</btn>
<?php endforeach; ?>
</div>
所以,如果我有我的結果是三排,代碼上述區塊將採取的東西形狀像這樣:
<div id="app">
<modal v-if="showModal">I am Modal 1</modal>
<btn @trigger="onShowModal">Button 1</btn>
<modal v-if="showModal">I am Modal 2</modal>
<btn @trigger="onShowModal">Button 2</btn>
<modal v-if="showModal">I am Modal 3</modal>
<btn @trigger="onShowModal">Button 3</btn>
</div>
這裏是我做的在JavaScript中底:
的JavaScript:
Vue.component('btn',{
template: `<button @click="$emit('trigger')"><slot></slot></button>`,
});
Vue.component('modal',{
template: `<p><slot></slot></p>`,
});
new Vue({
el: '#app',
data: {
showModal: false
},
methods: {
onShowModal(){
this.showModal = true;
}
}
});
這種方法的問題是,當我點擊任何一個刪除按鈕時,我得到一個'堆棧'的模態,而不是我想查看的模態。這是因爲我將showModal
設置爲true
,並且如果您看到填充的HTML塊,則會看到每個模塊設置爲v-if="showModal"
。
正如我開始明白前端,後端的關係,我的學習,這種模式在應用程序中更頻繁地出現。我如何解決這個問題(一個非常適合初學者的水平)?
接收應該顯示適用的數據在一個'模式,button'成分的情況下,單一 modal-button>'? –
Eisenheim
modal
組件脫身,如果我希望數據屬性名稱和'@ trigger'中的函數是用戶提供的,而不是靜態的'showModal'和'onShowModal'道具和函數。我的意思是這樣的:'在這種情況下,'modal-btn'組件中的'@ trigger'處理程序應該發出一個事件(比如''emit('show')'),然後父組件應該通過'
thanksd
謝謝,這會照顧事件的發射。但是如何在''中的'v-if'指令?我如何將v-value的值綁定到用戶選擇的數據屬性說'showConfirmModal'?我堅持使用'' –
Eisenheim