如何检查OM对象?

7
我一直在跟随om教程学习,使用Light Table来设置外部浏览器连接。此外,在我的clojurescript代码中,我调用(enable-console-print!)将我的println语句发送到浏览器控制台。
问题在于,当我打印一个om组件时,例如: (println (om/build my-component-function my-data)) 我得到的输出是: #<[object Object]> 如果我只是在LightTable中评估(om/build my-component-function my-data),我也会遇到同样的问题。
能够检查这个对象将有助于调试。如何打印更有意义的内容?
3个回答

10

2
我还想补充一点,(dom/render-to-str)在调试方面非常有帮助(https://github.com/swannodette/om/wiki/Documentation#render-to-str)。 - sthomps

3
您可以在Om项目的README文件中阅读到以下内容:https://github.com/swannodette/om 您可以使用ankha,这是一个EDN检查器视图。然后,您可以将组件打印为EDN并传递给ankha。另一种解决方案是(.dir js/console object),您将能够在firebug或chrome控制台上检查您的组件。

刚试了一下ankha,但好像对于om/build对象无效。它仍然会打印出#<[object Object]>。不过还是谢谢你的建议,对于其他Clojure对象非常有效。 - sthomps
@sthomps 你试过 (.dir js/console component) 吗? - tangrammer
(.dir js / console组件)会列出对象中定义的函数列表,但不提供有关它尝试呈现的DOM元素或我传递的数据的信息。 - sthomps

3
试试使用cljs-devtools。这个库利用了“自定义格式化程序”在Chrome Javascript控制台中漂亮地打印Clojure数据结构。
当您启用自定义格式化程序并将库集成到项目中时,它应该可以漂亮地打印对象:
(.log js/console your_namespace.your_object)

同时在控制台中输入应该可以工作(带代码自动补全)

your_namespace.your_object

免责声明:此功能在Chrome Dev Tools中是实验性的,我是该库的作者。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接