次のコードでエラーが発生します。私はイベントを受け取ることに関する条件付きレンダリングをしたい。私はmain.jsVue.js条件付きレンダリングでエラーが発生しました。インスタンスでプロパティまたはメソッドが定義されていませんが、レンダリング中に参照されます
window.eventBus = new Vue({})
とどこかにコード内でEventBusを持っている:
window.eventBus.$emit('change-visibility', true)
私は次のVueコンポーネントの可視性をトリガすることを期待:
<template>
<div>
<div v-if="viz.isVisible">
<h2>VISIBLE</h2>
</div>
<div v-else>
<h1>NOT VISIBLE</h1>
</div>
</div>
</template>
<script>
export default {
name: 'test',
date() {
return {
viz: {
isVisible: false
}
}
},
created() {
const self = this;
window.eventBus.$on('change-visibility', status => {
console.log('RECEIVED EVENT', status)
self.setVisability(status)
}),
},
methods: {
setVisability(ok) {
console.log('SET VISABILITY-----------------', ok)
this.viz.isVisible = ok
}
}
}
エラー:
[Vue warn]: Error in event handler for "change-visibility": "TypeError: undefined is not an object (evaluating 'this.viz.isVisible = ok')"
どのエラーがありますか?あなたのタイトルのものか質問のものか? – Phil
データの定義が間違っています。 'data()'の代わりに 'date()'メソッドに名前を付けました。 – cello
this.viz.isVisibleはイベントハンドラ(メソッドsetVisability)およびv-if = "viz.isVisible"でも定義されていません –