首页 > 解决方案 > Handlebars:根据 url 禁用一些内容

问题描述

我有一个带有侧边栏的基本布局。当我在 /users/profile 上时,我想隐藏侧边栏。我如何使用 if 助手来做到这一点?有没有办法获取当前文件名?这是代码:


<div class="wrapper">
    {{#if user}}
      <nav id="sidebar">
        <div class="sidebar-header">
          <h3>Options</h3>
        </div>

        <ul class="list-unstyled components">

          <li class="active">
            <h1>
            <a href="/users/search"  style="color: white">Home</a>
            </h1>
          </li>
          <li>
            <h1>
            <a href="/users/chatlist"  style="color: white">Chat</a>
            </h1>
          </li>
          <li>
            <h1>
            <a href="daaggiungere" style="color: white">About us</a>
            </h1>
          </li>
        </ul>
      </nav>
        {{else}}

        {{/if}}

如果用户登录侧边栏,则使用当前代码显示,否则隐藏。如果我在用户/个人资料上,我也想要同样的行为。

标签: node.jshandlebars.js

解决方案


您的路由由 Node.js 处理。在您的 Node.js 中的某个地方,您可能有关于用户打开时要做什么的说明,/users/chatlist或者/users/search,例如,您选择要呈现的模板。一旦您知道请求是针对 route 的/users/profile,您就可以为您的把手使用 JSON 有效负载来正确呈现页面。您可以根据需要自定义该有效负载,包括添加一些帮助字段。例如,它可能看起来像:

{
    user: { ... },
    sidebar: {
        visible: false
    }
}

然后在您的模板中,您可以将其用于条件检查,例如:

{{#if sidebar.visible}}
    <nav id="sidebar">
        ...
    </nav>
{{/if}}

推荐阅读