我想创建一个templateData辅助函数来创建类似于功能的小部件。 我已成功创建了一个小部件,用于为相关帖子生成HTML代码,但我正在努力创建帮助以创建先前的帖子小部件。
我的帮助函数第一次调用getCollection(' posts')来创建帖子列表,然后尝试逐步执行每个项目构建一个排序列表 - 就像bootstrap框架代码在pages / posts.html上做的那样.eco页面。我的问题是,在按排序列表构建时,我得到一个插入的逗号','看看从渲染页面中提取的html:
<nav class="linklist">
<ul>
<li><a href="/posts/bye">A Goodbye Blog Post</a></li>,
</ul>
</nav>
在templateData下的docpad.coffee中定义的辅助函数是:
getPriorPostsWidget: (widgetName) ->
if @getCollection('posts').length
pPosts = @getCollection('posts').toJSON()
myInner = for priorPost in pPosts
if @document.url != priorPost.url
"""
<li>
<a href="#{priorPost.url}">#{priorPost.title}</a>
</li>
"""
return """
<aside id="prior-posts">
<h3 class="widget-title">#{widgetName}</h3>
<nav class="linklist">
<ul>
#{myInner}
</ul>
</nav>
</aside>
"""
最后插入.eco布局文件
<%- @getPriorPostsWidget("Prior Posts") %>
Code尝试调试时有点乱,但我现在已经没有想法,并且认为我可以寻求帮助,因为我显然缺少一些重点。
更新:好的,这一定是漫长的一天,我的错误相当愚蠢。我假设的是一个字符串是一个字符串数组,array.tostring的默认处理是插入&#39;,&#39;。将#{myInner}更改为#{myInner.join(&#39;&#39;})可以解决问题!
科林
答案 0 :(得分:0)
问题是myInner是一个数组,而不是一个字符串。数组的默认处理 - &gt; String是添加','字符。解决方案是使用join('')将数组与空格连接。