2017-03-08 6 views

答えて

1

ため

、私は私が今までtriggerのデータ送信バージョンを自分自身を使用していたとは思わない - あなたはそれを使用する方法の詳細についてはthe jQuery documentationを参照する必要があります。これは少し投機的なもので、実験をする必要があるかもしれません。 Scalaの側で、署名は主に自分自身のために話す、と述べ

trigger()は、任意のデータのパラメータを取ることができ、そしてそれはAnyとしてon()のハンドラに渡されます。 on()のこのバージョンの署名では、JQueryEventObjectも想定されています。 (注:また、2つのデータフィールドをon()に渡すためのシグネチャもありますが、2つ以上を書くのは面倒ではありませんでした)。

on()のシグネチャは少し奇妙なので、jquery-facadeのEventHandler型は使用できません。これはScala関数をJSに自動変換するための魔法を提供します。このハンドラは、ちょうど(ほとんどのjQueryの呼び出しがそうであるように)JQueryEventObjectを受けていた場合、例えば、それはjqueryの - ファサードのpackage.scalaで、この機能によってJS関数になってになるだろう:

implicit def f12EventHandler(func:scala.Function1[JQueryEventObject, Any]):EventHandler = { func:js.Function1[JQueryEventObject, Any] } 

がないので、まれなデータ受信バージョンon()のものの標準的なものであれば、あなたの呼び出しのタイプを手動で帰属させるか、またはこの場合には上記のimplicitの独自のバージョンを作成する必要があります。

$(dom.document).on("my-event", (evt:JQueryEventObject, someData: Any) => { 
    println(someData) 
}:js.Function2[JQueryEventObject, Any, Any]) 

とあなたがprintlnより面白い何かをする必要がある場合、あなたは、実際の予想される型にsomeDataを狭くするパターンマッチングを使用する必要があります。

すべてこれはおそらくする必要があります上記の署名を意味します。心配、私はこれをテストしていないが、私はそれが動作するはずだと思う。

はい、これはDOMインターフェイスでちょっとタイプされています。それは強く型付けされるように設計されていないJSライブラリを使って作業する現実です。

希望します。

関連する問題