2014-04-09 17 views
7

Ho seguito l'om tutorial. Im utilizzando Light Table per configurare una connessione del browser esterno. Inoltre, nel mio codice clojurescript sto chiamando (enable-console-print!) per inviare le mie istruzioni println alla console del browser.Come ispezionare gli oggetti om?

Il problema è che quando stampo un componente om .. qualcosa di simile:

(println (om/build my-component-function my-data))

L'output che ottengo è:

#<[object Object]>

Ho lo stesso problema se io solo eval (om/build my-component-function my-data) in LightTable.

La possibilità di ispezionare questo oggetto sarà utile per il debug. Come posso stampare qualcosa di più significativo?

risposta

10

1 Provare a utilizzare (.log js/console object) che è ClojureScript equivalente di console.log(object);

2 Si può anche installare React Developer Tools extension for Google Chrome, che vi permetterà di sfogliare Componenti React/Om a pagina

+1

Vorrei anche aggiungere che (dom/render -to-str) è stato molto utile con il debug (https://github.com/swannodette/om/wiki/Documentation#render-to-str) – sthomps

3

Come si può leggere sul file README del progetto Om https://github.com/swannodette/om

È possibile utilizzare ankha, una vista ispettore di EDN. Quindi puoi stampare come edn il tuo componente e passare ad ankha. Altra soluzione può essere (.dir js/console object) e si sarà in grado di ispezionare il componente su Firebug o cromo console

+0

Ho appena provato ankha ma non sembra funzionare per gli oggetti om/build. Stampa ancora # <[oggetto oggetto]>. Grazie per il suggerimento, funziona benissimo per altri oggetti Clojure. – sthomps

+0

@sthomps hai provato (.dir js/componente della console)? – tangrammer

+0

(.dir js/console component) sputa un elenco di funzioni definite nell'oggetto ma non fornisce informazioni sull'elemento dom il suo tentativo di rendering oi dati che ho passato. – sthomps

2

Provare a cljs-devtools. Questa libreria sfrutta i "formattatori personalizzati" per le strutture di dati clojure piuttosto belle in Chrome Javascript Console.

Quando si attiva formattatori personalizzati e integrare libreria nel progetto di questo dovrebbe piuttosto stampare l'oggetto:

(.log js/console your_namespace.your_object) 

anche digitando nella console dovrebbe funzionare (con il completamento del codice)

your_namespace.your_object 

di responsabilità: Questa funzione è sperimentale in Chrome Dev Tools e sono autore della libreria.