2013-04-29 2 views
4

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

<tr> 
{{#each columns}} 
    <th> 
     {{name}} 
    </th> 
{{/each}} 
</tr> 

{{#each items}} 
    <tr> 
     {{each columns}} 
      <td> 
       {{! I want the items statusString field here for example }} 
       {{../dataField}} 
      </td> 
     {{/each}} 
    </tr> 
{{/each}} 

и вход в этот шаблон выглядит как это:

columns = [ 
    {name: 'status', dataField: 'statusString'}, 
    {name: 'name', dataField: 'name'} 
] 

items = [ 
    {status: 1, statusString: 'Active', name: 'item 1'}, 
    {status: 1, statusString: 'Active', name: 'item 2'}, 
    {status: 0, statusString: 'Disabled', name: 'item 3'}, 
    {status: 1, statusString: 'Active', name: 'item 4'} 
] 

в шаблоне я хотите перебрать каждый столбец и отобразить для каждого элемента данные, соответствующие каждому столбцу. Но как мне это сделать в руле? Я пробовал выражения вроде {{../{{dataField}}, {{{{dataField}}}}, но я не могу заставить ничего работать. Я использую руль в ember.js.

ответ

3

Это может быть завершено, просто используя хелпер

Handlebars.registerHelper('helper', function(fieldname, item) { 
    return item[fieldname]; 
}); 

Другой способ сделать это будет использовать объект итератора, который был recently added by handlebars. Вы можете перебирать через объект, как этот

var data = {"a": {"test":"test", "test2":"test2"}}; 

с шаблоном

{{#each a}} 
    {{@key}} - {{this}}, 
{{/each}} 

напечатать бы из "тест - тест, test2 - test2,". Если вы отредактировали свои данные, вы можете получить правильный результат, используя это.

Heres a jsfiddle showing both of these.

+0

Я немного поправлю вам скрипку, чтобы сделать этот образец работоспособным снова, вот вы: http://jsfiddle.net/XVCrC/1/ – AuthorProxy

Смежные вопросы