Handlebars作用域问题:不能从嵌入的' each '访问模板变量
Handlebars Scope Issue: Can't access template variable from embedded `each`
我想弄清楚为什么我不能从我的把手模板(在我的keystone项目中呈现)中嵌入的each
语句内访问我的模板变量。我在StackOverflow上读过很多类似的问题,但是没有一个能解决我的特殊用例。
我有一个简单的数据对象,它被传递到Handlebars模板,看起来[大致]像这样:
{
rootPath: '../../../',
navigation: { all: { 'a': { sublinks: [Object] }
}
我的问题是:为什么rootPath
模板变量在{{#each navigation.all}}
中打印完美,而在{{#each sublinks}}
中却无法打印?
这是我的车把模板:
<!-- rootPath prints fine here -->
Here is your rootPath variable: {{rootPath}}
{{#each navigation.all}}
<!-- rootPath prints fine here -->
top-level rootPath: {{../rootPath}}
{{#if sublinks}}
{{#each sublinks}}
<!-- WHY WON'T ROOTPATH PRINT HERE?? -->
<!-- Obviously, I am trying the three possible scope paths -->
sub-level rootPath attempt 1: {{../../rootPath}}
sub-level rootPath attempt 2: {{../rootPath}}
sub-level rootPath attempt 3: {{rootPath}}
{{/each}}
{{/if}}
{{/each}}
我得到以下输出(注意所有子级尝试都不能访问rootPath
模板变量):
我需要的是rootPath
无处不在,所以我可以得到这样的东西:
那么我在这里遗漏了什么范围问题或语法?
我正在使用Handlebars版本2.0.0
,因为这是由keystone预先打包的。
我可以通过使用@root
令牌来解决这个问题。
只要从嵌入的{{#each sublinks}}
中调用@root.rootPath
就足以解决我的问题。
Here is your rootPath variable: {{rootPath}}
{{#each navigation.all}}
top-level rootPath 1: {{../rootPath}} <!-- works -->
top-level rootPath 2: {{@root.rootPath}} <!-- works -->
{{#if sublinks}}
{{#each sublinks}}
sub-level rootPath 1: {{@root.rootPath}} <!-- works -->
sub-level rootPath 2: {{../../rootPath}} <!-- doesn't work -->
{{/each}}
{{/if}}
{{/each}}
生成如下输出:
<>之前这是你的rootPath变量:../../../顶级rootPath 1:…/…/…/顶级rootPath 2:…/…/…/子级别rootPath 1:…/…/…/sublevel rootPath 2:之前注意:用于顶级rootPath(在{{#each navigation.all}}
中,我可以使用其中之一:
{{../rootPath}} <!-- works -->
{{@root.rootPath}} <!-- works -->
然而,从嵌入的{{#each sublinks}}
中,只有@root.rootPath
似乎可以工作:
{{@root.rootPath}} <!-- works -->
{{../../rootPath}} <!-- doesn't work -->
相关文章:
- jquery.each函数和传递变量
- 使用For each循环-jquery创建变量
- Javascript for Each作为特殊变量
- 为什么我无法访问 Chrome 调试器中 $.each 循环中的变量
- 为什么 jQuery each() 函数中的全局变量会破坏我的翻转效果
- 将变量的总和相加 .each()
- 如何将 _.each 循环的结果分配给变量
- 返回 $.each 函数之外的每个变量
- 如何在jquery函数$.each($(“abc”)内传递变量.
- Javascript动态变量为$.each语句
- 访问jQuery.each()循环之外的变量
- jquery each|increment变量不起作用
- 对于Loop/Each Loop变量存储和比较(jQuery或Javascript
- 将一个变量附加到.each()语句中生成的BX滑块的每个实例
- jquery.each函数是否可能不破坏'这'变量
- 变量未正确赋值,可能存在作用域问题(getJSON()中的each()中有一个开关的函数)
- Jquery each():回调中的变量总是最后一个值
- .each()绑定悬停事件并传递一个变量给处理函数
- Handlebars作用域问题:不能从嵌入的' each '访问模板变量
- 当我试图在.each函数之外使用它时,变量变成Nan