如果用户为零,我正在尝试使用tinsel HTML template library删除节点,但我很难弄清楚如何评估条件,因为所有内容都基于宏。
此版本不起作用,因为它在编译期间将user
评估为表单'user
,这不是nil,因此硬设置true分支,并且从不重新评估。 (如果不完全正确的话,请随意纠正我的术语。)
(tc/deftemplate folder-list
(tc/html-document (slurp "resources/templates/folders.html"))
[user]
(tc/id= :mnuUsers)
(fn [node] (do (prn 'user) (if 'user node nil))))
这是我得到的最接近的,实际上在渲染时打印用户而不是编译时间,并正确分支,但会抛出一个错误,指出无法解析符号node
。
(tc/deftemplate folder-list
(tc/html-document (slurp "resources/templates/folders.html"))
[user]
(tc/id= :mnuUsers)
(fn [node] '(do (prn user) (if user node nil))))
答案 0 :(得分:1)
我从未使用过金属丝,但是我会在黑暗中拍摄......这有用吗?
(t/deftemplate folder-list
[[:h1#mnuUsers "header"]]
[user]
(t/id= :mnuUsers)
(fn [node]
(list 'if 'user node nil)))
我的常用方法是使用语法引号和取消引用。但是,我无法解决这个问题。上面用符号列表构建了一个表达式...它看起来很难看,但它可能会起作用。
修改强>
使用语法引用的版本:
(t/deftemplate folder-list2
[[:h1#mnuUsers "header"]]
[user]
(t/id= :mnuUsers)
(fn [node]
`(if ~'user ~node nil)))