我在enfocus的listen-live上使用this-as时遇到了问题。我使用listen-live而不是listen,因为我使用javascript生成button元素。
在下面的最小工作代码中,有一个使用从clojurescript生成的test.js的HTML文件/path/to/file.html。当单击该按钮时,我希望控制台记录button元素,但我收到的却是Window -> /path/to/file.html。
file.html
<html>
<head>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<div class="outer">
<button>Button</button>
</div>
</body>
</html>file.cljs
(ns my.ns
(:require [enfocus.events :as events])
(:require-macros [enfocus.macros :as em]))
(em/defaction setup []
[:.outer] (events/listen-live :click "button"
(fn [] (this-as this (js/console.log this)))))
(set! (.-onload js/window) setup)我对javascript不是很熟悉,但我希望记录button或.outer元素。收到Window元素后,我想知道是不是有一些基本的使用问题,或者是enfocus的问题。
发布于 2015-02-27 19:45:46
可能不是很理想,也不是很地道,但下面的方法对我很有效:
(em/defaction setup []
[:.outer] (events/listen-live :click "button"
(fn [e] (js/console.log (.-currentTarget e)))))
=> <button>https://stackoverflow.com/questions/28743303
复制相似问题