gpt4 book ai didi

javascript - 如何为 Handlebars 模板设置默认参数?

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:25 25 4
gpt4 key购买 nike

我编写了一个模板助手,用于插入链接,非常简单。

Handlebars.registerHelper('link_to', function(href, title) {
return new Handlebars.SafeString('<a href="/' + href + '">' + title + '</a>');
});

它的用法是这样的:

{{ link_to 'articles' 'Articles' }}

但是,如果 href 是自描述的,那么在第二个参数中指定大写版本对我来说似乎有点多余。因此,如果省略 title 参数,我想自动设置此行为。类似于以下内容:

Handlebars.registerHelper('link_to', function(href, title) {
if (!title) {
title = href.charAt(0).toUpperCase() + href.slice(1);
}
return new Handlebars.SafeString('<a href="/' + href + '">' + title + '</a>');
});

但是,当使用 {{ link_to 'articles' }} 呈现时,我只会得到 [object Object]。保留第二个参数没什么大不了的,但我只是想知道是否有办法解决这个问题。

最佳答案

Helpers 接受一个可选的 Hash 作为它的最终参数。如果模板没有提供 hash 参数,Handlebars 将自动传递一个空对象 ({})。

[来自 https://handlebars-lang.github.io/docs/guide/block-helpers.html#hash-arguments ]

因此,当您在帮助程序参数列表中拥有 title 时,它​​被视为 Hash 对象。您可以通过在控制台中记录标题来检查。因此,为了让您的代码正常工作,您可以使用 typeof 运算符检查标题类型是否为字符串。

if(!title || typeof title != 'String') {
title = href.toString().charAt(0).toUpperCase() + href.slice(1);
}

它应该可以工作。工作示例: http://jsfiddle.net/prabhat_rai/ve4h39vm/

关于javascript - 如何为 Handlebars 模板设置默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706213/

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