2013-07-09 21 views
5

Desidero impostare la proprietà "value" di un elemento "input" utilizzando Clojurescript, ma ho problemi con la sintassi di setProperties in goog.com. Qualcuno ha un esempio funzionante?Come impostare un attributo di un elemento DOM in Clojurescript?

Aggiornamento ------

Questo sembra funzionare:

(goog.dom.setProperties 
(goog.dom/getElement "element-name") 
(clj->js {:value "text"})) 

risposta

8

Se è necessario creare oggetti usa e getta JS per l'uso con le API JS, è possibile farlo direttamente utilizzando js-obj:

(js-obj "value" "text") 
;; produces {"value": "text"} in the compiled output 

Naturalmente se si dispone già di una mappa ClojureScript con le voci appropriate, clj->js sarà più conveniente.

Ancora più importante, si potrebbe prendere in considerazione il passaggio a una libreria ClojureScript per la manipolazione DOM. Diversi sono disponibili:

  • Luke VanderHart Domina, che potrebbe essere stato il primo, viene utilizzato da Enfocus (elencati di seguito) e Pedestal;

  • di dommy prismatico, notevole per le sue propri meriti così come i post del blog molto divertente a questo proposito sul Prismatic's blog (che possono servire come una grande introduzione ai benefici della macro: first one, second one, third one);

  • Creighton Kirkendall Enfocus, che è in poche parole una libreria Enlive -like per ClojureScript, che è fantastica;

  • Kevin Lynagh's Singult, che è una libreria in stile Hiccup per ClojureScript con funzionalità interessanti per l'unione in modifiche al DOM, piuttosto che il rerendering da zero.

Problemi correlati