假设我只能访问<article>
文件中的/public/articles.html
和子元素。
...
<article class="clj-article">
<h1 class="clj-title"></h1>
<p class="clj-date"></p>
<ul>
<li class="clj-tag"></li>
</ul>
</article>
...
如何在不知道父元素的情况下迭代<article>
? (defsnippet
)中有deftemplate
(def articles [{:title "title1"
:date "date1"
:tags ["tag1" "other tag1"]}
{:title "title2"
:date "date2"
:tags ["tag2" "other tag2"]}])
(e/defsnippet show-articles "public/articles.html" [:.clj-article] [articles]
[:.clj-article]
(e/clone-for [a articles]
[:.clj-title]
(e/content (:title a))
[:.clj-date]
(e/content (:date a))
[:.clj-tag]
(e/clone-for [t (:tags a)]
[:.clj-tag] (e/content t))))
我的代码段提供了我需要的输出,然后我想将它插入我的模板(以及articles.html其他部分中的其他代码段)因为我不了解.clj-article
父母我试图将其作为目标:
(e/deftemplate index "public/articles.html" []
[:.clj-article]
(e/append (show-articles articles)))
我得到了我想要的输出,但包含在其他<article>
和子模式中。
<article class="clj-article">
<h1 class="clj-title"></h1>
<p class="clj-date"></p>
<ul class="clj-tags">
<li class="clj-tag"></li>
</ul>
<article class="clj-article">
<h1 class="clj-title">title1</h1>
<p class="clj-date">date1</p>
<ul class="clj-tags">
<li class="clj-tag">tag1</li>
<li class="clj-tag">other tag1</li>
</ul>
</article>
<article class="clj-article"> <h1 class="clj-title">title2</h1>
<p class="clj-date">date2</p>
<ul class="clj-tags">
<li class="clj-tag">tag2</li>
<li class="clj-tag">other tag2</li>
</ul>
</article>
</article>
如何防止这种情况发生?
谢谢!
答案 0 :(得分:0)
Christophe Grand在他精彩的教程中得到了答案! https://github.com/cgrand/enlive/wiki/Table-and-Layout-Tutorial,-Part-3:-Simple-Transformations#whole-tag-transformations
使用e/substitute
(e/deftemplate index "public/articles.html" []
[:.clj-article]
(e/substitute (show-articles articles)))