2017-09-21 3 views
-1

私はヘルパークラスを持っていて、何らかの値が変更されたときに発生するイベントメソッドを定義したいと思います。Javascript create event method

例えば簡素化:

class HelperClass { 
    activeIndex = 0; 

    constructor(element) {} 

    ...some computation methods... 
} 

と私はactiveIndexを外部から変更されたときにイベントを発生する必要があります。 addEventListenerのようなものです。内部の値が変更されたとき、それはclasの外側から聞くことができました。 例:

const obj = new HelperClass(element); 
obj.onActiveIndexChange((event, activeIndex) => ...something...) 

or 

obj.on('activeIndexChange', (event, activeIndex) => ....something....) 

私は外部ライブラリを使用しません。ネイティブ機能を備えたバニラコードを推奨します。

ありがとうございました。

UPDATE:簡単な解決策

class HelperClass { 
    activeIndex = 0; 

    addEventListener(eventName, func) { 
    this[ 
     `on${eventName.substr(0, 1).toUpperCase()}${eventName.substr(1)}` 
    ] = func; 
    } 

    onActiveIndexChange(activeIndex) {} 
} 

this.onActiveIndexChange(newValueは)値

を変更した後に呼び出した後、定義外:

objInstance.addEventListener('activeIndexChange', (activeIndex) => 
    ...myCustomCodePassed in callback... 
); 

答えて

0

あなたがオブジェクトのプロパティのsetterを定義することができます:

https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty

値を変更するたびに機能がトリガーされます。

バニラJavaScriptです。

+0

のDefinePropertyは大丈夫ですNodeJSを使用している場合は? 。しかし、私は外部からアクセス可能なメソッドイベントを作成したい。 – rado

+0

それは方法ではありません! – lilezek

+0

私は高速なソリューションを作成します。最高ではないが動作する。私は方法を作ったwchithは別の機能を取り、その機能を私は外から呼び出すことができます。何かこのように:onValueChange(func){this.callbackMethod = func} – rado

1

あなたがsometheng行が必要がある可能性があります。

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget

またはhttps://nodejs.org/api/events.html#events_class_eventemitterあなたは私が右ES6セッターのような自己クラスのメソッド、同じ機能を呼び出したいとき

+0

私の場合に使用する方法を理解しようとしています。私のJavascriptは主要な言語ではなく、私にとっては非常に困難です。 – rado