2013-07-03 4 views
2

ClojureScript에서 goog.dom.query을 사용하려고합니다.goog.dom.query ClojureScript에서 TypeError

(:require [goog.dom.query :as q]) 

… 

(q/query ".foo.bar") 

런타임에 JS 콘솔에서 다음과 같은 오류가 발생합니다 :

Uncaught TypeError: Object function $o(a,b){if(!a)return[];if(a.constructor==Array)return a;if(!ia(a))return[a];if(ia(b)&&(b=ia(b)?document.getElementById(b):b,!b))return[];var b=b||document,c=b.ownerDocument||b.documentElement;xo=b.contentType&&"application/xml"==b.contentType||dk&&(b.doctype||"[object XMLDocument]"==c.toString())||!!c&&(ek?c.xml:b.xmlVersion||c.xmlVersion);return(c=Wo(a)(b))&&c.Bb?c:Zo(c)} has no method 'Ja' 

편집 : 난 그냥 그것을 필요에서조차 오류가 발생합니다.

+0

나는 코드'이 코드의 일부는 도조 툴킷 출신의 코멘트가, 당신이 그이 있습니까 by'받은 (안 JS 코드가 goog.dom.query를 사용하여 clojurescript 만에서) 꽤 인쇄 컴파일 후 코드에 주석이 있습니까? 필자는 제 3 자 라이브러리가 포함되어 있지 않지만 코드가 전혀 생성되지 않은 이유를 이해하지 못하고 컴파일 중에 오류가 발생하지 않는다고 생각합니다. – HMR

+0

이것은 goog 디렉토리에 라이브러리가 없으므로 goog.dom.query를 third_party ... dojo에서 찾을 수 있으며 deps.js에 대한 참조가 있어야합니다. 참조가 누락 된 경우 컴파일하는 방법을 모릅니다. 클로저 라이브러리에는'third_party \ closure \ goog \ doog \ dom \ query_test.html' 파일이 있어야합니다.이 파일을 열어 단위 테스트가 goog.dom.query를 통과하는지 확인할 수 있습니다. – HMR

+0

JS 파일 @HMR에 이러한 주석이 있습니다. –

답변

0

실제로 쿼리는 goog.dom에서 기본적으로 사용할 수 없습니다.

(ns cljs-dom.core 
    (:import [goog.dom query]) 
    (:require [goog.dom :as gdom])) 

을 그리고 다음과 같이 사용할 수 있습니다 : 다음은 어쨌든 그것을 사용할 수있는 방법

(.log js/console (aget (query ".myClass") 0)) 

gdom 여기에 편의를 포함되어 있습니다. gdom/createElement과 다른 모든 표준 전화를 쓸 수 있습니다. query 만 있으면 필요하지 않습니다. 소스 코드 마크