Метеорные петли и условные данные

Учитывая, что количество месяцев в годах и возвращенные данные могут относиться только к определенным месяцам, как я могу отобразить это в blaze, пожалуйста, но также отобразить 0, где подходящая запись не существует?

С чем я работаю:

{{#each month in months}}
  {{#each recordDataset }}
    {#if equals recordDataset.period month}<td>{{ recordDataset.value}}</td>{/if}
  {{/each}}
{{/each}}

Этот вложенный цикл, очевидно, возвращает слишком много, потому что он перебирает 2 отдельных набора данных. Я могу придумать, как это сделать на других языках, конечно, но не на blaze.

Например, идеально было бы:

{{#each month in months}}
  {{#if recordSet['month'] == month}}
    <td>{{ recordDataset.value}}</td>
  {{else}}
    <td>&nbsp;</td>
  {{/if}}
{{/each}}

Но я не понимаю, как я могу этого добиться.

Любая помощь будет очень признательна.


person user1496093    schedule 19.02.2016    source источник
comment
попробуйте перенести всю логику на JS   -  person imkost    schedule 19.02.2016
comment
Можете ли вы добавить еще немного кода о файле recordDataset. Я могу помочь / предложить вам, но я не получил именно то, что вам нужно.   -  person Kishor    schedule 19.02.2016


Ответы (1)


Исходя из вашего примера кода, recordDataSet имеет свойство month, которое вы хотите сравнить с каждым month в months. Учитывая это, вы можете просто создать оператор равенства и использовать его для сравнения:

Template.registerHelper( 'equals', ( v1, v2 ) => {
  return v1 === v2;
});

{{#each month in months}}
  {{#if equals recordDataSet.month month}}
    <td>{{recordDataset.month}}</td>
  {{else}}
    <td>0</td>
  {{/if}}
{{/each}}

Поскольку у меня нет схемы вашего RecordDataSet, вам придется настроить ее в соответствии с вашими потребностями.

person Stephen Woods    schedule 19.02.2016