我有一个车把模板,为一个子元素加载一个部分.
我需要从部分中的调用模板中的父上下文中访问变量...似乎没有解决部分内部的任何问题.
简化的代码如下:
模板
{{#each items}}
{{> item-template}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
部分的
value is {{value}}
Run Code Online (Sandbox Code Playgroud)
(显然真正的代码更复杂,但它是相同的原则,在部分内部..似乎是未定义的.)
为了表明它是未定义的,我使用了一个非常简单的帮手whatis:
Handlebars.registerHelper('whatis', function(param) {
console.log(param);
});
Run Code Online (Sandbox Code Playgroud)
并将以上代码更新为:
更新的模板
{{#each items}}
{{whatis ..}} <-- Console shows the correct parent context
{{> item-template}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
更新部分
{{whatis ..}} <-- Console shows "undefined"
value is {{value}}
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?我错过了什么吗?
编辑:关于把手的github项目的这个问题有一个未解决的问题
我在JSON对象中有一个2D数组(称为table;)
data = {
tableID : "testTable",
table : [
[{type:'a', value:'x'},{type:'a', value:'y'},{type:'a', value:'z'}],
[{type:'a', value:'x'},{type:'a', value:'y'},{type:'a', value:'z'}],
[{type:'a', value:'x'},{type:'a', value:'y'},{type:'a', value:'z'}]
]
};
Run Code Online (Sandbox Code Playgroud)
并且已经使用模板成功地使用把手渲染它:
<table id = "{{tableID}}-table">
{{#each table}}
<tr id = "{{../tableID}}-row-{{@index}}">
{{#each this}}
<td id = "{{../../tableID}}-row-{{../index}}-col-{{@index}}">
{{this.type}}-{{this.value}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
Run Code Online (Sandbox Code Playgroud)
但是,在td标记id中,我似乎无法访问父索引{{../index}} - 行的索引.什么都没有返回:
<td id = "testTable-row--col-x">
Run Code Online (Sandbox Code Playgroud)
但是,我可以访问当前上下文的索引{{@index}}.
有任何想法吗??
很多人提前感谢!!
丰富
ps使用1.0.0-rc.3