gpt4 book ai didi

javascript - Handlebars.js 使用 ../引用父上下文

转载 作者:行者123 更新时间:2023-12-03 02:41:24 32 4
gpt4 key购买 nike

假设我有以下 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}} 指令~~无法渲染~ ~ 呈现空值。

有没有办法通过 block 助手传递父上下文?

最佳答案

更改此:

<a href="{{../rootPath}}{{href}}">

对此:

<a href="{{../../rootPath}}{{href}}">
为什么?因为 if 语句位于内部上下文中,所以首先您需要上升一个级别,这就是为什么您必须添加 ../

查看更多详细信息: https://github.com/wycats/handlebars.js/issues/196

关于javascript - Handlebars.js 使用 ../引用父上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230494/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com