2016-04-30 17 views
0

在我正在处理的基础站点上,导航部分中有一个下拉顶栏,它从src/data中的几个YML文件填充链接(每个下拉类别)。每个条目看起来是这样的:Foundation:链接中的根变量不适用于子目录中的页面

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}} 

的目标是链接是相对于站点的根,如果外部是假的,如果外部是真的,则按原样使用(并打开一个新标签)。

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

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

回答

0

我想出了这个问题。在{{#each}}块内部,Handlebars上下文发生更改,使像{{root}}这样的变量只能通过父上下文访问。这个问题可以通过用{{../root}}代替{{root}}来解决。

Handlebars documentation

../将解决的确切价值,基于被调用块助手变化。使用../仅在情景发生变化时才需要,所以助手的子女(如each)需要使用../,而助手的子女(例如if)则不需要。

相关问题