3

我正在尝试将以下行转换为 Cljs,

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

对应的地图是什么,

{ enableHighAccuracy:  true }

在 ClojureScript 中?enableHighAccuracy 是一个符号吗?

4

1 回答 1

4

如果您正在使用与库的互操作(例如地理定位,在您的情况下),并且它需要一个 JavaScript 对象,您需要向它传递一个标准的 JavaScript 对象,而不是 Clojure 映射。

js-obj您可以使用不带参数的函数在 ClojureScript 中构造其中之一。这将返回一个没有字段的空 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 回答