使用帮助程序自动打印Meteor集合的字段,而不指定其名称

时间:2016-01-11 18:06:14

标签: meteor meteor-blaze spacebars meteor-helper

是否可以使用帮助程序自动打印Meteor集合的字段而不指定它们?

让我们说我开始有一个帮助器,它返回存储在表中的对象集合,如下所示:

{{ #each CollectionData }}
   <thead>
     <tr>
       <th>Code</th>
       <th>Description</th>
     </tr>
   </thead>
   <tbody>
     <Tr class="object-row">
       <Td> {{code}} </ td>
       <Td> {{description}} </ td>
     </tr>
   </tbody>

   ...
{{/each}}

现在我指定一个&#34;对象架构&#34;为每个集合设置我想要自动打印的字段,伪示例:

// Items is the name of the possible collection
Schema.items var = {
  fields {
    code: {
      columnName: "code",
      show: false,
    },
    description: {
  columnName: "description",
      show: false,
    },
    otherField {
      columnName: "foo",
      show: false,
    }
  }

}

现在,我会让帮助器自动生成show check为true的集合字段的表列和值,而不必手动指定{{code}},{{description}}等等on,伪示例:

{{ #each CollectionData }}
   <thead>
     <tr>
      {{print each column where show check is == true, without manually specifing any name}}
     </tr>
   </thead>
   <tbody>
     <Tr class="object-row">
       {{print the value of the column, for this record, where show check is == true, without specifing its name}}
     </tr>
   </tbody>
   ...
{{/each}}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

最简单的方法是为每个TD创建一个模板,例如

   <thead>
     <tr>
      {{#each fetchColumnHeaders}}
        {{> columnHeader }}
      {{/each}}
     </tr>
   </thead>
{{ #each CollectionData }}
   <tbody>
     <Tr class="object-row">
      {{#each fetchColumnItems}}
       {{> columnItem}}
      {{/each}}
     </tr>
   </tbody>
{{/each}}

<template name="columnHeader">
  <th>{{label}}</th>
</template>

<template name="columnItem">
  <td>{{label}}</td>
</template>

然后你可以编写模板助手来返回列标题,以及基于你的模式的各种项目