1

我正在尝试使用 Noir 编写一个简单的 Web 应用程序,该应用程序具有一系列下拉菜单,其内容会发生变化,具体取决于在前一个下拉菜单中选择的内容。然后将这些选项作为表单提交。虽然网上有很多关于如何使用直接 javascript 来做到这一点的信息,但我更愿意坚持使用 Clojure。我正在使用 Noir 1.2.1 和 Hiccup 0.3.6。

我目前的尝试看起来像这样(fh 是 hiccup.form-helpers:

(defpage "/run-experiment" []
  (common/layout 
    (fh/form-to [:post "/run-experiment"]
      (fh/label "dd1" "Drop Down 1:")
      (fh/drop-down :opts1 '(Opt1A Opt1B) 'Opt1A)
      (fh/label "dd2" "Drop Down 2:")
      (fh/drop-down :opts2 (cond (= 'Opt1A (get-opt1)) '(Opt2A1 Opt2A2)
                                 (= 'Opt1B (get-opt1)) '(Opt2B1 Opt2B2))))))

(而不是条件,我会用地图实现上述内容,但现在我虽然这更清楚)

我希望能够获取第一个下拉列表中选定元素的文本值,并根据该值显示第二个元素的 html。我试图弄清楚是否有办法使用 Hiccup 来生成我需要添加到第一个下拉列表中的 onclick 参数所需的 Javascript。此外,我试图弄清楚是否有办法访问表单其他元素的 id 值,以便我可以将它们链接到生成的 Javascript/HTML 中。理想情况下,我希望有一些类似于 Hiccup 对 HTML 所做的事情,但对于 Javascript。我认为 Clojurescript 可能是一个不错的候选者,但似乎它可能比我想要的要多。我想我想要的是一个轻量级的库,它可以生成可以与 Hiccup 结合使用的常见 Javascript 任务字符串。

4

1 回答 1

0

I know this is ugly, but you can insert javascript as string literals with hiccup:

(hiccup.element/javascript-tag "alert(\"hello world\")")

But then why not just write js..

于 2012-06-06T13:36:18.637 回答