基础:链接中的根变量不适用于子目录中的页面

时间:2016-04-30 23:34:23

标签: handlebars.js zurb-foundation

在我正在处理的基金会网站上,导航部分中有一个下拉列表栏,它从src / data中的几个YML文件填充其链接(每个下拉类别一个)。每个条目看起来像这样:

link:
  text: "Example Link"
  url:  "beta/page2.html"
  external: false

生成每个菜单条目的部分片段如下:

{{#each category}}
    <li><a href="{{#unless external}}{{root}}{{/unless}}{{url}}" {{#if external}}target="_blank"{{/if}}>{{text}}</a></li>
{{/each}}

目标是,如果external为false,则链接相对于站点的根目录,如果external为true,则按原样使用(并打开新选项卡)。

问题是,当我导航的页面位于子目录中时,内部链接似乎无法正常生成。例如,如果我在example.com/alpha/page1.html,则上面的菜单链接指向example.com/alpha/beta/page2.html而不是example.com/beta/page2.html

如何更改代码以正确生成页面链接?

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。在{{#each}}块内部,Handlebars上下文发生变化,使{{root}}之类的变量只能通过父上下文访问。可以使用{{root}}替换{{../root}}来修复此问题。

来自Handlebars documentation

  

../将根据调用块的帮助程序解析的确切值。仅在上下文发生变化时才需要使用../,因此each等帮助者的子项需要使用../ ,而if等助手的子项需要使用sess.run(W) 不要。