2014-10-29 4 views
4

У меня есть JSON, который выглядит следующим образом:Pass объект в качестве параметра OnClick метода в шаблоне руле

{ 
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

Alt: Обычно я использую атрибуты данных * для свойств, которые я хочу отобразить в таком сценарии – Chandu

+0

Как это понимать? Должен ли я регистрировать свой собственный вспомогательный метод? –

+0

  • {{name}} ({{age}})
  • Chandu

    ответ

    3

    Проводка для будущих ссылок:

    Получил мой ответ здесь:

    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> 
    
    Смежные вопросы