将JavaScript对象/哈希传递给Handlebars助手?

可以将 JavaScript对象/哈希传递给Handlebars帮助程序调用吗?我想做这样的事情:
<label>Label here</label>
{{#textField {'id':'text_field_1','class':'some-class',size:30} }}{{/textField}}
<p>Help text here.</p>

Here is a jsFiddle.目前它产生以下错误

Uncaught Error: Parse error on line 3:
...bel>  {{#textField {'id':'text_field_1'
----------------------^
Expecting 'CLOSE','CLOSE_UnesCAPED','STRING','INTEGER','BOOLEAN','ID','DATA','SEP',got 'INVALID'

或者,我可以做到这一点,分裂在’,’,但我不喜欢语法:

{{#textField "'id'='text_field_1','class'='some-class',size=30"}}{{/textField}}

注意:我特别不想将数据/属性(id,类,大小等)作为JSON对象传递到template()方法中.我想要模板中的所有内容.

解决方法

解决了.我做到了

帮手:

Handlebars.registerHelper('textField',function(options) {
    var attributes = [];

    for (var attributeName in options.hash) {
      attributes.push(attributeName + '="' + options.hash[attributeName] + '"');
    }

    return new Handlebars.SafeString('<input type="text" ' + attributes.join(' ') + ' />');
});

和模板:

<label>Label here</label>
{{textField id="text_field_1" class="some-class" size="30" data-something="data value"}}
<p>Help text here.</p>

根据the documentation(页面底部),您可以将可变数量的参数传递给辅助方法,并且它们将在options.hash中可用(假设“options”是您的帮助方法的参数).还有什么也很好,你可以使用命名参数,而且参数顺序并不重要.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...