图文……好像有关。
Handlebars自从升到2.0之后,就放开了,版本号蹭蹭涨,如今已经升到4.0版。
这个版本最显著的变化在于层级结构,以往的版本中,所有的Block Helper都可以形成一个层级。对于{{#each}}
、{{#with}}
这种还好说,层级关系比较明确,很好理解;但是{{#if}}
,也有可能形成一个层级,这就很奇怪了。尤其像我前文所述,它只是可能形成一个层级,就更诡异了。
所以这个修改其实是件好事儿。
接下来,代码时间。
Before
{{#each list}}
{{#if is_true}}
<p>这里需要向上两层才能找到值。{{../../value}}注意,这里是两层。</p>
{{/if}}
{{/each}}
var data = {
list: [
// items..
],
value: 'value'
}
, template = Handlebars.compile(hbs);
template(data);
After
{{#each list}}
{{#if is_true}}
<p>这里需要向上两层才能找到值。{{../value}}那,这里只有一层了</p>
{{/if}}
{{/each}}
JavaScript是一样的。
总结
为了写这篇文章又去看了一遍Handlebars的文档,发现新增了不少特性,尤其开始支持子表达式,看来有必要再好好看一遍。
欢迎吐槽,共同进步