前のドロップダウン メニューで選択した内容に応じて内容が変化する一連のドロップダウン メニューを持つ Noir を使用して、単純な Web アプリケーションを作成しようとしています。これらのオプションはフォームとして送信されます。ストレートな JavaScript を使用してこれを行う方法に関する情報は Web 上にたくさんありますが、私は 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))))))
(条件ではなく、上記をマップで実装しますが、今のところ、これはより明確でしたが)
最初のドロップダウンで選択した要素のテキスト値を取得し、その値に基づいて 2 番目の要素の html を表示できるようにしたいと考えています。Hiccup を使用して、最初のドロップダウンに追加する必要がある onclick 引数に必要な Javascript を生成する方法があるかどうかを調べようとしています。さらに、フォームの他の要素の id 値にアクセスして、結果の Javascript/HTML にリンクできるようにする方法があるかどうかを調べようとしています。理想的には、Hiccup が HTML に対して行うのと同じようなことを望んでいますが、Javascript に対してはそうです。私は Clojurescript が良い候補かもしれないと思っていましたが、私が探しているもの以上のものがあるようです。私が欲しいのは、Hiccup と組み合わせて使用できる一般的な Javascript タスクの文字列を生成する軽量のライブラリだと思います。