我正在尝试将以下行转换为Cljs,
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy: true });
对应的地图是什么,
{ enableHighAccuracy: true }
在ClojureScript中? enableHighAccuracy是一个符号吗?
答案 0 :(得分: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