2012-09-25 20 views
2

我想下面的行Cljs转换,Javascript来ClojureScript转换

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

什么是对相应的地图,

{ enableHighAccuracy: true } 
在ClojureScript

? enableHighAccuracy一个符号?

回答

3

如果您使用互操作与库(如地理位置,你的情况),并预计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