3 votes

Conversion de Javascript en ClojureScript

J'essaie de convertir la ligne suivante en Cljs,

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

Quelle serait la carte correspondante pour,

{ enableHighAccuracy:  true }

en ClojureScript ? enableHighAccuracy est-il un symbole ?

4voto

levand Points 4020

Si vous utilisez l'interopérabilité avec une bibliothèque (comme la géolocalisation, dans votre cas), et qu'elle attend un objet JavaScript, vous devrez lui transmettre un objet JavaScript standard, et non une map Clojure.

Vous pouvez en construire un en ClojureScript en utilisant la fonction js-obj sans aucun argument. Elle renverra un JavaScript vide, sans champs ; vous pourrez ensuite ajouter des champs à l'aide de la fonction aset fonction.

Votre code serait donc quelque chose comme :

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

Si c'est quelque chose que vous faites souvent, il est facile d'écrire une fonction utilitaire pour convertir une carte ClojureScript en un objet JavaScript en utilisant les valeurs par défaut que vous souhaitez ; un exemple d'une telle fonction se trouve dans ce gist ; https://gist.github.com/1658431

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X