handlebars.js - 如何从收集循环中过滤数据?

标签 handlebars.js assemble

我正在尝试根据 YAML front-matter 中的数据构建一个相关的信息小部件。 我的集合中的每个页面都有一些关联的标签,其想法是仅显示那些与当前查看的页面具有共同标签的页面。

我已成功使用以下代码获取输出现有页面的完整标签:

<section class="see-also">
{{#each tags}}
    <p>In <span class="tag">{{tag}}</span>:</p>
    {{#each pages}}
      <li><a href="{{relative ../../page.dest dest}}">{{data.title}}</a></li>
    {{/each}}
{{/each}}
</section>

我可以在 {{#each Tags}} 上应用某种过滤器吗?

谢谢。

最佳答案

有一个 inArray helper您可以使用它来测试当前标签是否在当前呈现的页面上的 tags 集合中:

<section class="see-also">
{{#each tags}}
{{#inArray ../page.tags tag }}
    <p>In <span class="tag">{{tag}}</span>:</p>
    {{#each pages}}
      <li><a href="{{relative ../../page.dest dest}}">{{data.title}}</a></li>
    {{/each}}
{{/inArray}}
{{/each}}
</section>

您可能需要修改父路径语法以考虑附加 block 助手:

<section class="see-also">
{{#each tags}}
{{#inArray ../page.tags tag }}
    <p>In <span class="tag">{{tag}}</span>:</p>
    {{#each ../pages}}
      <li><a href="{{relative ../../../page.dest ../dest}}">{{../data.title}}</a></li>
    {{/each}}
{{/inArray}}
{{/each}}
</section>

关于handlebars.js - 如何从收集循环中过滤数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992684/

相关文章:

ember.js - Ember JS : Could not find property 'action'

javascript - Handlebars 访问嵌套属性

html - Grunt 预编译内联 Markdown

javascript - Grunt Assemble 无法读取属性 'Stage'

node.js - 使用 Express Handlebars 注册组装 Handlebars 助手

javascript - 如何访问 Handlebars 中的 URL 参数?

javascript - HTML 表单提交(POST req)到服务器应返回动态 HTML

angular - 常规变更日志自定义模板 - 如果未指定关闭则不返回任何行

assemble - 数据文件与页面的匹配

javascript - Assemble.io assemble-middleware-permalinks 不起作用,组装任务没有输出