我正在尝试构建一个使用goog.fx.Dragger来使目标可拖动的小om组件。我需要goog.fx.Dragger:像拖拉机那样:
(ns om-draggable-me.core
(:require [om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]
[goog.fx.Dragger :as dragger]))
当我使用它时:
(defn draggable [app owner]
(reify
om/IDidMount
(did-mount [_]
(let [target (om/get-node owner)]
(dragger. target)))
om/IRender
(render [_]
(dom/div #js {:id "drag-box" :className "drag-box"}))))
我收到编译器警告:
警告:在第22行src / cljs / om_draggable_me / core.cljs使用未声明的Var om-draggable-me.core / dragger
看到使用goog.fx.DragDrop的其他例子,为什么这不起作用?
答案 0 :(得分:1)
在require
表单中,dragger
是名称空间别名
[goog.fx.Dragger :as dragger]
打算像这样使用:
dragger/your-var
;; the same as goog.fx.Dragger/your-var
在你的脚本中,它被用作了一个var:
(dragger. target)
并且,正如编译器所抱怨的,这样的var还没有被定义。
您可以看到人们像这样引用clojure.string
:
(require '[clojure.string :as str])
无需担心与clojure.core/str
功能冲突:
(str/join ", " [1 2 3])
(str "hello" "world")
答案 1 :(得分:0)
由于某种原因,别名不起作用,它使用完全限定名称:
(did-mount [_]
(let [target (om/get-node owner)]
(goog.fx.Dragger. target)))