如何在ClojureScript中将变量名以字符串形式传入函数?
场景描述
我想要为元素制作一个可动态创建的表单模板,组件涉及的元数据需使用传入的变量名作为其元数据。
代码示例
例如:
视图部分
(ns my.app (:require [my.app.templating :as template]) (defn view-component [nOperacaoExtrato] [:<> (template/temp-form nOperacaoExtrato)])
模板函数
(ns my.app.templating) (defn temp-form "Template input" [dado] #_(js/console.log (str "meta-data: " (meta #'dado))) (let [nome-var (:name (meta #'dado))] [:div.col [:label {:for (str "form1_" nome-var)} "Natureza do Dispendio"] [:p {:class "form-control", :id (str "form1_" nome-var) :name (str "form1" nome-var)} dado]]))
预期结果
因传入的变量为nOperacaoExtrato,预期生成代码如下:
[:div.col [:label {:for "form1_re-fin-n-operacao-extrato-prop"} "Nº da Operação no Extrato"] [:p {:class "form-control", :id "form1_re-fin-n-operacao-extrato-prop", :name "form1_re-fin-n-operacao-extrato-prop"} (h/preencher-str nOperacaoExtrato)]]
问题所在
尝试以下两种方式获取元数据时,均返回null:
(meta #'data) (meta data)
内容的提问来源于stack exchange,提问作者Pedro Gomes Branquinho Facti
相关产品推荐
相关产品推荐

