vue.jsで親から子のイベントは呼べない?
例えば、複数箇所で再利用されるモーダルを開くのに
親に状態を持たせず、親から子のメソッドを呼ぶことはできないのでしょうか?
下記のような記述の仕方でかけないでしょうか?
親でtrue・falseをv-bindすればいいだけなのですが、子の状態を親が管理するのが
なんとなく違和感ありまして...
子コンポーネント
<template>
<div id="modal" v-if="showModal">
モーダル!
<button type="button" @click="close()">閉じる</button>
</div>
</template>
<script>
export default {
data: function () {
return {
showModal: false
}
},
methods: {
show() {
this.showModal = true;
},
close() {
this.showModal = false;
},
}
};
</script>
親コンポーネント
import Vue from 'vue';
import modalComponent from '../components/modal.vue';
var app = new Vue({
el: '#app',
data: {
},
components: {
modal: modalComponent
},
methods: {
show() {
modal.show();
},
close() {
modal.close();
}
}
});
親コンポーネントが設置されるHTML
<div id="myBukken">
<button type="button" @click="show()">モーダルオープン</button>
<modal></modal>
</div>