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

时间:2014-10-29 22:52:36

标签: javascript json handlebars.js

我有一个看起来像这样的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} )" ...

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

发布以供参考:

从这里得到答案:

Handlebars.js parse object instead of [Object object]

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

Handlebars.registerHelper('json', function(context) {
    return JSON.stringify(context);
});

<li onclick="someFunc({{json this}})">{{name}} ({{age}}) </li>