将对象作为参数传递给手把模板中的onclick方法

Pass object as parameter to onclick method in handlebars template

本文关键字:方法 onclick 对象 参数传递      更新时间:2023-09-26

我有一个JSON,如下所示:

{
list: [
        { name: 'AAA',
          id: 1,
          age: 34
        },
        { name: 'BBB',
          id: 2,
          age: 24
        }
      ]
}

像这样的模板:

<ul>
    {{#each list}}
        <li onclick="someFunc({{this}})">{{name}} ({{age}}) </li>
    {{/each}}
</ul>

基本上,我只想把当前对象传递给一个用它做一些事情的函数

现在,如果我尝试它,那么生成的HTML只有

 ... onclick="someFunc( [object Object] )" ...

而我希望它是这样的:

 ... onclick="someFunc( {name: 'AAA', id: 1, age: 34} )" ...

我该怎么解决这个问题?

发布以供未来参考:

从这里得到我的答案:

Handlebars.js解析对象而不是[object-object]

事实证明,Handlebar在粘贴到模板之前会对数据执行toString操作。我所要做的就是注册一个助手方法,将其转换回json。

Handlebars.registerHelper('json', function(context) {
    return JSON.stringify(context);
});
<li onclick="someFunc({{json this}})">{{name}} ({{age}}) </li>