我认为这很简单,但似乎我忽视了一些事情。
(ns main.core
(:require [dommy.core :refer-macros [sel sel1]]))
(sel1 :#my-input) => #<[object HTMLInputElement]>
(.value (sel1 :#my-input))
=> #<TypeError: document.querySelector(...).value is not a function>
答案 0 :(得分:3)
在ClojureScript中,我们有两种与JavaScript互操作的特殊形式:.
和.-
。
.
应该用于调用对象的方法,.-
应该用于访问属性(包括函数作为值)。如果您查看Dommy库中value
函数的source code,您会看到它使用.-
特殊表单。
看看这里:https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure#host-interop
答案 1 :(得分:2)
虽然我不是100%为什么.value
无法正常工作,但以下工作非常出色:
(ns main.core
(:require [dommy.core :as dommy :refer-macros [sel sel1]]))
(sel1 :#my-input) => #<[object HTMLInputElement]>
(dommy/value (sel1 :#my-input))
=> "my-input-value"