在我正在处理的基金会网站上,导航部分中有一个下拉列表栏,它从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
。
如何更改代码以正确生成页面链接?
答案 0 :(得分:0)
我想出了这个问题。在{{#each}}
块内部,Handlebars上下文发生变化,使{{root}}
之类的变量只能通过父上下文访问。可以使用{{root}}
替换{{../root}}
来修复此问题。
../
将根据调用块的帮助程序解析的确切值。仅在上下文发生变化时才需要使用../
,因此each
等帮助者的子项需要使用../
,而if
等助手的子项需要使用sess.run(W)
不要。