3

次の行を Cljs に変換しようとしていますが、

var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy:  true });

対応するマップは何でしょうか。

{ enableHighAccuracy:  true }

ClojureScriptで?enableHighAccuracy はシンボルですか?

4

1 に答える 1

4

ライブラリ (あなたの場合は地理位置情報など) との相互運用を使用していて、JavaScript オブジェクトが必要な場合は、Clojure マップではなく、標準の JavaScript オブジェクトを渡す必要があります。

引数なしで関数を使用することにより、ClojureScript でこれらのいずれかを作成できjs-objます。これにより、フィールドのない空の JavaScript が返されます。その後、関数を使用してフィールドを追加できますaset

したがって、コードは次のようになります。

(let [arg (js-obj)]
  (aset arg "enableHighAccuracy" true)
  (.watchPosition (.geolocation navigator) on-success on-error arg))

これが頻繁に行われる場合は、ClojureScript マップを任意のデフォルトを使用して JavaScript オブジェクトに変換するユーティリティ関数を簡単に作成できます。このような関数の例は、この要点にあります。https://gist.github.com/1658431

于 2012-09-25T15:26:29.760 に答える