Vue.Js v2を使用しています。送信後にデータをリロードするために、component2-> c2methodでcomponent1-> c1methodを呼び出したい。
Vue.component('component1', {
methods: {
c1method: function(){
alert('this is c1method')
},
}
})
Vue.component('component2', {
methods: {
c2method: function(){
component('component1').c1method()//like this
},
}
})
ドキュメントはこの状況に対処します
https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication
コンポーネントに同じ親がある場合、親がリッスンするイベントを発行できます。 ref
プロパティを設定すると、親からc1method
を呼び出すことができます。
https://vuejs.org/v2/guide/components.html#Child-Component-Refs
親子関係以外の場合、これはこれと同じです。 1つのメソッド、他のコンポーネントからのコンポーネントの任意のメソッドを呼び出します。 $on
関数を$root
インスタンスに追加し、$root
にアクセスして$emit
関数を呼び出す他のコンポーネントから呼び出します。
最初のコンポーネント
.... mount(){ this。$ root。$ on( 'component1'、()=> { //コードが追加されますhere this.c1method() } }
2番目のコンポーネントでは、$emit
の$root
関数を呼び出します
... c2method:function(){ this。$ root。$ emit( 'component1')// like this }、
ソケットのように機能します。参照はこちら
これを試してください。
<template>
...
<component1 ref='componentOne'>
...
</template>
<script>
Vue.component('component2', {
methods: {
c2method: function(){
this.$refs.componentOne.c1method();
}
}
});
</script>