我试图对调用d3对象(set-attr
)上的函数(.attr
)的函数(node
)进行一些重构。我希望能够将对象函数(.attr
)与set-attr
分离。
但我一直收到此错误Cannot read property 'each' of null
。
我希望有人在Cljs中有d3互操作经验并且知道可以工作的东西,因为它在常规js对象上工作正常。
(defn set-attr [node [attr settr]]
(.attr node attr settr))
(defn set-attr [node [attr settr]]
((aget node "attr") attr settr))
((aget (clj->js {:foo (fn [x y] (str "hi" x y))}) "foo" ) "ryan" "lol")
;; => "hiryanlol"
答案 0 :(得分:1)
d3 uses inheritance。因此,您无法将此对象作为纯粹的哈希表进行处理。你必须达到它的原型才能得到你想要的东西,这通常不是一个好主意:这会产生相当脆弱的代码。