ボタンを使用して他のコンポーネントでモーダルを表示する方法は?たとえば、次のコンポーネントがあります。
info.vue
<template>
<div class="container">
<button class="btn btn-info" @click="showModal">show modal</button>
<example-modal></example-modal>
</div>
</template>
<script>
import exampleModal from './exampleModal.vue'
export default {
methods: {
showModal () {
// how to show the modal
}
},
components:{
"example-modal":exampleModal
}
}
</script>
exampleModal.vue
<template>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
hihi
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</template>
ExampleModal.vueからモーダルを表示する方法は?次のように、モーダルを表示するためにデータトグルとデータターゲットを使用できることを知っています。
<button class="btn btn-info" data-toggle="modal" data-target="#exampleModal">show modal</button>
しかし、「showModal」メソッドを使用してモーダルを表示する方法はありますか?
スニペットによると、古典的なBootstrapモーダルを使用しています。使用する必要があるのはdata-toggle
およびdata-target
その場合の属性:
<div id="app">
<div class="container">
<button class="btn btn-info" data-toggle="modal" data-target="#exampleModal">show modal</button>
<example-modal></example-modal>
</div>
</div>
質問を読み違えているので、答えを編集します。
カスタムメソッドでモーダルを開くことができます。 refs
を使用して要素 "#exampleModal"を見つけて、bootstrap=メソッドでモーダルを開くだけです( Bootstrap Programmatic API )
<div id="app">
<div class="container">
<button class="btn btn-info" @click="showModal">show modal</button>
<example-modal ref="modal"></example-modal>
</div>
</div>
methods: {
showModal() {
let element = this.$refs.modal.$el
$(element).modal('show')
}
}
JQueryがなければ、「method:」ブロックに次のような関数を作成できます。
openEditModal(data){
// <handle with your data>
this.$root.$emit("bv::show::modal", "your-modal-id");
}