jQueryプラグインのファサード(https://github.com/devbridge/jQuery-Autocomplete)を記述しようとしています。オブジェクトを渡すいくつかのコールバックを含んで、私はのようにモデル化しました:JSとアプリケーションデータを含むスカラJSファサード
@js.native
trait AutocompleteSuggestion extends js.Object {
val value: String = js.native
val data : js.Any = js.native
}
ライブラリが
value
にアクセスする必要が
。 data
は私の用です。私はオブジェクトを作成し、それをライブラリにフィードし、コールバックの引数としてそれを返します。
私は、これらのオブジェクトを作成するために行うことができました最高のは、これらのオブジェクトの1つを渡され
object AutocompleteSuggestion {
def apply[T](value: String, data: T) = {
literal(value = value, data = data.asInstanceOf[js.Any]).asInstanceOf[AutocompleteSuggestion]
}
}
コールバックは、しばしば
def onSelect(suggestion: AutocompleteSuggestion): Unit = {
val cb = suggestion.data.asInstanceOf[CourseBasic]
// do something with the data
}
のようにどのように上の任意の提案を探して終わるですこれを改善する?特に私はたくさんのキャストをしているように感じます。 https://www.scala-js.org/doc/interoperability/facade-types.htmlの例ではわかりませんが、これらの例では、基本的な型以外のものの使用を慎重に避けています。
美しいです。私の嫌悪感に、私はScalaJSDefinedを無視しました。押してくれてありがとう、ドキュメントをもう一度読んでくれてありがとう。 – bwbecker