Faris Nasution
Faris Nasution

Reputation: 3630

Instantiate namespaced javascript class

I want to use google maps api v3, and it needs me to instantiate google.maps.LatLng. Using clojurescript this is what I do:

(ns foocljs.core)

(LatLng. (.-maps js/google) 100 100)

I got an error undefined is not a function, this is the culprit:

new foocljs.core.LatLng(foocljs.core.google.maps, // ... another args

I'm guessing this is because the compiler think that LatLng. is clojure namespaced class. How to deal with this? Thanks.

Upvotes: 3

Views: 1008

Answers (2)

Joaquin
Joaquin

Reputation: 2744

Using js/a.b.c.d is a bad practice and is likely to break in future versions of the compiler (because it is not a clojure compatible version of interop from what I know)

The good way would be:

(def LatLng (.. js/google -maps -LatLng))

(LatLng. 100 100)

Upvotes: 5

Faris Nasution
Faris Nasution

Reputation: 3630

Silly me, I can just do this:

(js/google.maps.LatLng. 100 100)

Upvotes: 1

Related Questions