HTML5には、HTML要素に対して機能するイベントメカニズムがありますが、コントロールやコレクションなどの任意のオブジェクトにイベントを追加することはできません。
このため、Wijmoは、すべてのWijmoクラスにあらゆるイベントを実装するために使用できるEventクラスを定義しています。WijmoイベントとHTMLイベントの主な相違点は次のとおりです。
Wijmoイベントは、HTMLイベントに代わるものではありません。通常、アプリケーションでは両方を使用します。コントロールのhostElementまたはコントロールテンプレート内で定義される要素をターゲットにするマウス操作やキーボード操作を処理するには、HTMLイベントを使用します。DOMに直接関連しないコントロール固有のイベントを処理するには、Wijmoイベントを使用します。たとえば、valueChangedやrowAddedなどです。
以下の例は、プレーンJavaScriptを使用して、InputNumberコントロールのHTMLイベントとWijmoイベントにハンドラを追加する方法を示します。
import { InputNumber } from '@mescius/wijmo.input';
// コントロールを作成します
let ctl = new InputNumber('#inputNumber');
// Wijmoイベントハンドラをアタッチします
ctl.valueChanged.addHandler(function (s, e) {
console.log('the value has changed to ' + s.value);
});
// HTMLイベントハンドラをアタッチします
ctl.addEventListener(ctl.hostElement, 'keypress', function(e) {
console.log('you pressed ' + e.charCode);
});
上の例は、プレーンJavaScriptを使用する構文を示します。Angular、React、Vueなどのフレームワークを使用するアプリケーションでは、それぞれのフレームワークで規定された構文を使用する必要があります。
たとえば、AngularJSでは、次のようにしてvalueChanged Wijmoイベントにハンドラをアタッチします。
<wj-input-number
value-changed="myValueChangedEventHander(s, e)">...
Angularでは、代わりに次のようにしてイベントハンドラをアタッチします。
<wj-input-number #theControl
(value-changed)="myValueChangedEventHander(theControl, $event)">...