I sent a note to the dojo list, so they're aware of the situation. Meanwhile it's an easy enough work-around to avoid the problem.
-Patrick On Saturday, December 29, 2012 5:51:32 PM UTC-8, David Nolen wrote: > > Yes this is known problem w/ ClojureScript that could be solved if/when we > get proper Keywords/Symbol types. > > David > > > On Sat, Dec 29, 2012 at 8:46 PM, Patrick Logan > <patric...@gmail.com<javascript:> > > wrote: > >> From what I can tell, dojo is testing an argument to see whether it has a >> method named "call". dojo seems to be assuming that if such a method >> exists, then the argument will not be a string. >> >> Then clojurescript seems to be assigning a function named "call" to the >> String prototype. And so these two libraries conflict. >> >> I am unsure whether either library is completely to blame. However it >> seems fairly clear that dojo does not intend to invoke "call" on a string. >> >> Changing dojo/on.js, line 83, to >> >> if(type.call && (!type instanceof String)){ >> >> does fix the problem. I'll check with the dojo folks on making a change >> along these lines unless someone can suggest a change to clojurescript. >> >> -Patrick >> >> >> On Wednesday, November 28, 2012 9:15:11 PM UTC-8, Brian Nelson wrote: >>> >>> ok. I've had some time to look into this now and have figured out a few >>> things. >>> >>> 1. This is not due to calling the DGrid constructor from clojurescript. >>> It occurs even when I call the DGrid constructor from straight javascript >>> code. So it doesn't have to do with the clojurescript code calling the >>> constructor. >>> >>> 2. The error goes away if I don't require cljs.core. If cljs.core is >>> required then the grid constructor ends up calling back into some code in >>> cljs.core, which is where the error occurs. >>> >>> So I'm a little further down the road but still don't know exactly why >>> doing a goog.require("cljs.core") causes cljs.core to receive events from >>> the DGrid constructor. Digging in with my javascript debugger and will >>> update this as I find out more information. >>> >>> >>> >>> On Monday, November 19, 2012 11:15:54 PM UTC-6, Brian Nelson wrote: >>>> >>>> Hi, >>>> >>>> I'm brand new to ClojureScript and have been trying to get myself >>>> familiarized with it's javascript interop capabilities by implementing >>>> the Dojo toolkit tutorials. I've successfully implemented several of >>>> the tutorials, but now I've run into something that I can't figure out >>>> and am looking for someone to point me in the right direction. >>>> >>>> I am calling the DGrid(Dojo grid) constructor using the function >>>> maingrid >>>> >>>> (ns couchadmin.core >>>> (:use [jayq.util :only [clj->js]]) >>>> (:require [clojure.browser.repl :as repl])) >>>> >>>> (defn greet [dom fx] >>>> (let [element (.byId dom "greetingcljs")] >>>> (set! (. element -innerHTML) "Hello from Dojo using >>>> ClojureScript") >>>> (.play (.slideTo fx (clj->js {:top 200 :left 200 :node >>>> element}))))) >>>> >>>> (defn maingrid [dom grd] >>>> (do >>>> >>>> (grd. (clj->js {:columns (clj->js {:first "First Name"})}) "grid") >>>> (js/alert "hello world"))) >>>> >>>> (defn ^:export main [] >>>> (comment (repl/connect "http://localhost:9000/repl")) >>>> (comment (js/require (array "dojo/dom" "dojo/fx" "dojo/domReady!") >>>> greet)) >>>> (js/require (array "dojo/dom" "dgrid/Grid" "dojo/domReady!") >>>> maingrid)) >>>> >>>> >>>> When the page is loaded the grid is constructed, but afterwards I see >>>> the following javascript exception >>>> >>>> Uncaught Error: No protocol method ILookup.-lookup defined for >>>> type object: [object HTMLDivElement] >>>> >>>> I'm wondering what this message is indicating. Did I call the >>>> constructor incorrectly? Is this an incompatibility with Dojo? Do I >>>> need to implement ILookup somehow? Any help would be greatly >>>> appreciated. >>>> >>>> Brian >>>> >>> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en