vm.$listeners
は、Vue.jsのインスタンス(vm
)のプロパティであり、親コンポーネントから子コンポーネントに渡されたすべてのイベントリスナーを含むオブジェクトです。
Vue.jsでは、親コンポーネントから子コンポーネントにデータやイベントを渡すことができます。親コンポーネントが子コンポーネントにイベントリスナーを渡す場合、v-on
ディレクティブを使って子コンポーネントにイベントをリッスンするためのメソッドをバインドします。これらのイベントリスナーは、vm.$listeners
プロパティにまとめられます。
以下は、vm.$listeners
を使用して子コンポーネント内で親から渡されたイベントリスナーを取得する例です。
// ParentComponent.vue
<template>
<ChildComponent @custom-event="handleCustomEvent" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
handleCustomEvent() {
console.log('Custom event handled in parent component');
}
}
}
</script>
// ChildComponent.vue
<template>
<button @click="$emit('custom-event')">Click me</button>
</template>
<script>
export default {
mounted() {
console.log(this.$listeners); // This will log { 'custom-event': [Function] }
}
}
</script>
上記の例では、親コンポーネントから子コンポーネントにcustom-event
というイベントリスナーが渡され、子コンポーネント内でvm.$listeners
を介してアクセスされます。これにより、子コンポーネントが親から渡されたイベントリスナーを動的に操作することが可能になります。
コメント