使用这个 - 就像enfocus的听力一样

时间:2015-02-26 13:06:48

标签: clojurescript

我在使用enfocus&{39} this-as时使用listen-live时遇到问题。我使用listen-live代替listen因为我使用javascript生成button元素。

在以下最低工作代码中,使用从clojurescript生成的HTML /path/to/file.html文件test.js。单击按钮时,我希望控制台记录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的问题。

1 个答案:

答案 0 :(得分:0)

可能不理想或惯用,但以下适用于我:

(em/defaction setup []
  [:.outer] (events/listen-live :click "button"
                                (fn [e] (js/console.log (.-currentTarget e)))))

=> <button>