2017-05-12 10 views
0

私のVueJSアプリケーションでは、コンポーネント間でデータを送信するイベントバスとして使用しているVueインスタンスがあります。VueJSのすべてのカスタムイベントを聴くには?

それはちょうど、このです:

import Vue from 'vue'; 
export const EventBus = new Vue(); 

はその後、私のコンポーネントは、私がEventBusをインポートして、私のコンポーネントでEventBus.$emit()EventBus.$on()を使用しています。

このアプローチは、ここで説明されている:https://alligator.io/vuejs/global-event-bus/

私が行うことができるようにしたいのですがどのようなEventBusを介して送信されるすべてのイベントに耳を傾けています。 1つのリスナーをすべてのイベントにバインドすることができれば、これをロギングに使用したり、開発環境用にいくつかのシステムにデータを供給したりすることができます。

vmの種類はありますか?$ listenToEverything()はありませんか?

+1

ことはできませんが、あなたはいつでも変更することができます'Vue.prototype。$ emit'をあなたの好みに合わせて... – Terry

+2

Vuexはグローバルイベントバスよりも優れたソリューションを提供します。 –

+1

ありがとうございましたdavidLは、あなたのアプリケーションのどこにでもアクセスできるゲッターを提供する集中化された状態管理を提供するtry vuexを言った –

答えて

0

VueJSの作者はhacky solution for listening to all eventsを提供:

var oldEmit = this.compiler.emitter.emit 
this.compiler.emitter.emit = function() { 
    console.log('got event: ' + arguments[0]) 
    oldEmit.apply(this, arguments) 
} 

(もv1.0の上で動作するように言われている)別の解決策:

const old_on = this.$on; 
this.$on = (...args) => { 
    // custom logic here like pushing to a callback array or something 
    old_on.apply(this, args); 
}; 
関連する問題