所以,我知道如果我能够实现额外的 Handlebars 助手,我就能解决这个问题,但这不是一种选择。
我们正在为我们的帮助台 [ZenDesk] 使用第三方后端系统,它使用 Handlebars 作为动态内容的一般标记。我在我们的帮助中心网站的主页上有一个部分,我想列出前 5-6 篇常见问题解答文章,然后下面有一个“查看更多”链接,供用户查看该特定部分中的其余文章。
开箱即用,它们允许我们使用 IF 和 IS 条件,但除了 TRUE 或 FALSE、不大于、不小于、不大于或等于等之外没有比较。我写了一个简单的帮助程序这将允许这样做,但无论我将它放在我们可用的模板中的什么位置,它总是会生成一个错误,指出该函数无效。
在与该应用程序的支持团队讨论后,我被告知不允许使用自定义助手。我必须完全依赖 HTML、CSS 和 JAVASCRIPT/JQUERY 来找到解决方案。
那么....有没有人知道我如何使用 CSS 或 JAVASCRIPT 在 5 次迭代中关闭 Handlebars #each 循环的可能解决方案?
更新:2018 年 9 月 5 日:
这是我在“常见问题”部分使用的 #each 循环
<h2>Frequently Asked Questions</h2>
<section class="section faq-base">
<section class="categories">
<ul class="">
{{#each categories}}
{{#if ../has_multiple_categories}}
<li class="">
<a href='{{url}}' class="">
<h4 class="blocks-item-title">{{name}}</h4>
</a>
</li>
{{else}}
{{#each sections}}
{{#is id //ID FOR FREQUENTLY ASKED QUESTIONS SECTION}}
<div class="accordion homeFAQ" id="homeFAQ">
{{#each articles}}
<div class="card">
<div class="card-header" id="heading{{@index}}">
<h5 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapse{{@index}}" aria-expanded="true" aria-controls="collapse{{@index}}">
{{title}}
</button>
</h5>
</div>
<div id="collapse{{@index}}" class="collapse" aria-labelledby="heading{{@index}}" data-parent="#homeFAQ">
<div class="card-body">
{{body}}
</div>
</div>
</div>
{{/each}}
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<a href="{{url}}" class="btn btn-link collapsed">...SEE MORE</a>
</h5>
</div>
</div>
</div>
{{/is}}
{{/each}}
{{/if}}
{{/each}}
</ul>
</section>
</section>
从上面的代码可以看出,我将 FAQ 插入到 Bootstrap Accordion 中,最后是 ...SEE MORE
按钮
最佳答案
可不可以给文章默认加一个display:none
,然后用JS根据页面上文章的类(或什么的)统计页面上的文章数,然后再用JS去掉前5-6篇的display:none
?可能不是最优雅的方法,但应该是实现您所寻找的目标的一种方法。
关于javascript - 在不使用额外助手的情况下限制 Handlebars #each 中的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52187685/