我正在尝试将以下行转换为 Cljs,
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy: true });
对应的地图是什么,
{ enableHighAccuracy: true }
在 ClojureScript 中?enableHighAccuracy 是一个符号吗?
我正在尝试将以下行转换为 Cljs,
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy: true });
对应的地图是什么,
{ enableHighAccuracy: true }
在 ClojureScript 中?enableHighAccuracy 是一个符号吗?
如果您正在使用与库的互操作(例如地理定位,在您的情况下),并且它需要一个 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