【问题标题】:How to detect if page is current in {{#each pages}}?如何检测 {{#each pages}} 中的页面是否为当前页面?
【发布时间】:2015-03-24 14:37:55
【问题描述】:

我只有几天时间学习assemble,我正在尝试使用部分创建目录。


toc.hbs

<ul >
{{#each  pages }}
    <li>
        <a  href ="{{assets }}/{{basename }}.html" >{{data.title }}</a >
    </li >
{{/each  }}
</ul >

layout.hbs

<div class="row">
    <div class="col-sm-3">
        {{> toc}}
    </div>
    <div class="col-sm-9">
        {{> body}}
    </div>
</div>

这很好用,除了我想在当前页面上设置 class="active" 。

问:有没有办法使用 assemble & handlebars 的内置功能轻松做到这一点?我需要使用像ifCond 这样的助手吗?

【问题讨论】:

标签: javascript handlebars.js assemble


【解决方案1】:

您可以使用{{#is}}{{/is}} 块有条件地添加样式。

<li {{#is title "Features"}}class="active"{{/is}}>
  <a href="features.html">Features</a>
</li>

如果您认为标题不够稳定,您可以在basename 或其他字段上进行比较。

【讨论】:

    【解决方案2】:

    在玩了一会儿之后,我终于发现了 {{debug}} 助手,它将整个上下文打印到控制台。从这里我发现有一个未记录的属性isCurrentPage,当页面是当前正在处理的页面时,它返回true

    结果:

    <ul >
    {{#each  pages }}
        <li {{#if isCurrentPage}}class="active"{{/if}}>
            <a href ="{{assets }}/{{basename }}.html" >{{data.title }}</a >
        </li >
    {{/each  }}
    </ul >
    

    【讨论】:

    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2015-05-10
    相关资源
    最近更新 更多