假设我有以下 JSON 和 handlebars.js 模板:
JSON
{
rootPath: '/some/path/',
items:[ {
title: 'Hello World',
href: 'hello-world'
}, {
title: 'About',
href: 'about'
}, {
title: 'Latest News',
href: 'latest-news'
}
}
模板
<script id="test-template" type="text/x-handlebars-template">
<ul class="nav">
{{#each items}}
<li><a href="{{../rootPath}}{{href}}">{{title}}</a></li>
{{/each}}
</ul>
</script>
上面的模板有效,直到我想过滤项目 - 假设有 2 个列表一个奇数和另一个偶数,这是一个简单的奇数模板:
<script id="test-template" type="text/x-handlebars-template">
<ul class="nav">
{{#each items}}
{{#isOdd @index}}
<li><a href="{{../rootPath}}{{href}}">{{title}}</a></li>
{{/isOdd}}
{{/each}}
</ul>
</script>
和注册的助手:
// isOdd, helper to identify Odd items
Handlebars.registerHelper('isOdd', function (rawValue, options) {
if (+rawValue % 2) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
助手按预期工作,只渲染奇数项,但是对父上下文的引用丢失了,所以{{../rootPath}}
指令 ~~fails to render~~ 渲染一个空值。
有没有办法通过块助手传递父上下文?