我正在使用由vue-router触发的单个文件组件。我有一个components/Header.vue
,它使用一个孩子modals/HelpModal.vue
,而孩子则有一个孩子components/Modal.vue
。Vue.js 2如何访问方法中的数据
我想周围的事件传递,以保持Modal.vue
可重复使用的,但我似乎不能从一个事件中访问this.show
在HelpModal.vue
Modal.vue
<template>
<div class="modal">
<button class="modal__close" @click="$emit('close')">
</button>
<slot></slot>
</div>
</template>
HelpModal.vue
<template>
<modal v-if="show" @close="closeModal">...help modal content...</modal>
</template>
<script>
import Modal from 'components/Modal.vue'
import bus from 'eventBus'
export default {
components: {
Modal
},
data:() => {
return {
show: false
}
},
methods: {
closeModal:() => {
this.show = false
}
},
mounted:() => {
bus.$on('showHelpModal',() => {
console.log('show modal!', this.show); // undefined
this.show = true
})
}
}
Header.vue
<template>
<header>
<button @click="showHelpModal">Show help</button>
<help-modal></help-modal>
</header>
</template>
<script>
import HelpModal from 'views/modals/HelpModal.vue'
import bus from 'eventBus'
export default {
components: {
HelpModal
},
methods: {
showHelpModal:() => {
bus.$emit('showHelpModal')
}
}
}
</script>
我可能会去这一切完全错误的,但它是我能看到它的工作,以在触发帮助模态标头中的链接,打开