【问题标题】:Is it possible to escape a character inside a handlebar?是否可以转义车把内的字符?
【发布时间】:2021-12-31 08:19:48
【问题描述】:

我希望能够在handlabars.js 中插入一个逗号,例如:{{ JOURNAL \, }} 为每个存在的项目渲染一个逗号,因此不会因为不存在而出现无意义的逗号键值对。谢谢大家!

{{#each items}}
 <button class="accordion-button"
     {{#if (equals type "article")}}  {{AUTHOR}} {{TITLE}} {{JOURNAL}}, {{VOLUME}}({{NUMBER}})  {{MONTH}} {{YEAR}}                        {{/if}}
 </button>    
{{/each}}

【问题讨论】:

    标签: javascript html json handlebars.js templating


    【解决方案1】:

    您可以检查JOURNAL 是否存在。然后仅包含它和一个尾随逗号。

    {{#if JOURNAL}}{{JOURNAL}}, {{/if}}
    

    您也可以创建自己的自定义助手:

    Handlebars.registerHelper('ifExistAddComma', function (str) {
        return str === undefined ? '' : `${str}, `;
    })
    
    {{ifExistAddComma JOURNAL}}
    

    playground

    编辑:您可以编写一个更复杂(但也更通用)的自定义帮助程序,以使用自定义分隔符连接任意数量的参数:

    Handlebars.registerHelper('join', function (delim, ...args) {
      args.pop() // remove meta information
      return args
        .filter(arg => arg !== undefined) // filter out undefined properties
        .join(delim);
    })
    
    {{join ', ' AUTHOR TITLE JOURNAL (join '' VOLUME '(' NUMBER ')') MONTH YEAR}}
    
    author, title, journal, volume(number), month, year
    

    playground

    【讨论】:

    • 我正要回答,谢谢:+1
    • 唯一的问题是代码会臃肿如果我为每个{{AUTHOR}} {{TITLE}} {{JOURNAL}},{{VOLUME}}({{ NUMBER}}) {{MONTH}} {{YEAR}},它会变得很大,但感谢您的建议!
    • @AlexandruFilipescu 您也可以使用自定义助手。
    • 你是不可思议的奥利安,谢谢!!
    • 我发现显示的最后一个元素有问题,它也会有逗号,有什么方法可以检查它是最后一个元素吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多