2014-04-09 15 views
7

Ich habe das Om-Tutorial verfolgt. Verwenden Sie Light Table, um eine externe Browserverbindung einzurichten. Außerdem rufe ich in meinem Clojurescript-Code (enable-console-print!) an, um meine println-Anweisungen an die Browserkonsole zu senden.Wie man om-Objekte prüft?

Das Problem ist, dass wenn ich eine om Komponente drucken .. so etwas wie:

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

Der Ausgang ich erhalte, ist:

#<[object Object]>

ich das gleiche Problem haben, wenn ich Just eval (om/build my-component-function my-data) in LightTable.

Die Möglichkeit, dieses Objekt zu überprüfen, ist hilfreich beim Debuggen. Wie kann ich etwas aussagekräftiger drucken?

Antwort

10

1 Versuchen (.log js/console object) verwendet, die ist ClojureScript Äquivalent console.log(object);

2 Sie auch React Developer Tools extension for Google Chrome installieren können, die Ihnen erlaubt, zu durchsuchen React/Om-Komponenten auf Seite

+1

Ich möchte das auch hinzufügen (dom/render -to-str) war sehr hilfreich beim Debuggen (https://github.com/swannodette/om/wiki/Documentation#render-to-str) – sthomps

3

Wie Sie auf der Readme-Datei von Om Projekt lesen https://github.com/swannodette/om

Sie können ankha verwenden, eine EDN Inspektor Ansicht. Dann können Sie Ihre Komponente als edn ausgeben und an ankha übergeben. Andere Lösung kann (.dir js/console object) und Sie werden

Ihre Komponente auf Firebug oder Chromkonsole inspizieren können,
+0

Ich habe einfach versucht, Ankha, aber es scheint nicht für OM/Build-Objekte zu arbeiten. Es wird weiterhin # <[Objektobjekt]> gedruckt. Danke für den Tipp, funktioniert gut für andere Clojure Objekte. – sthomps

+0

@sthomps haben Sie versucht (.dir js/console-Komponente)? – tangrammer

+0

(.dir js/console component) spuckt eine Liste der im Objekt definierten Funktionen aus, gibt aber keine Informationen über das zu rendernde dom-Element oder die übergebenen Daten. – sthomps

2

Versuchen Sie cljs-devtools. Diese Bibliothek nutzt "benutzerdefinierte Formatierer", um Clojure-Datenstrukturen in der Chrome-Javascript-Konsole zu drucken.

Wenn Sie benutzerdefinierte Formatierer und integrieren Bibliothek in Ihrem Projekt ermöglichen sollte dies ziemlich drucken Ihr Objekt:

(.log js/console your_namespace.your_object) 

Auch in der Konsole eingeben sollte funktionieren (mit Code-Vervollständigung)

your_namespace.your_object 

Haftungsausschluss: Diese Funktion ist in Chrome Dev Tools experimentell und ich bin Autor der Bibliothek.