2017-10-17 9 views
0

次のコードでエラーが発生します。私はイベントを受け取ることに関する条件付きレンダリングをしたい。私は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')"

+0

どのエラーがありますか?あなたのタイトルのものか質問のものか? – Phil

+1

データの定義が間違っています。 'data()'の代わりに 'date()'メソッドに名前を付けました。 – cello

+0

this.viz.isVisibleはイベントハンドラ(メソッドsetVisability)およびv-if = "viz.isVisible"でも定義されていません –

答えて

1

タイプミスがあります。データを返すメソッドの名前はdata()である必要がありますが、名前はdate()です。

名前が間違っているため、vueコンポーネントにデータメンバーが定義されていないため、this.vizは定義されていません。そのため、エラーメッセージにはthis.vizが未定義であることがオブジェクトではありませんメンバーisVisible

関連する問題