流星火焰显示表中对象的动态值

时间:2018-11-05 23:33:43

标签: meteor dynamic meteor-blaze

我是Meteor的新手,我试图在表中显示某个对象的某些结果,值和行根据结果而改变,格式如下:

obj={10: [“1”, “3”, “0”, “0”]
11: [“1”, “7”, “0”, “0”]
12: [“1”, “12”, “0”, “0”]}

所以数据是动态的但不是集合,数组的每个元素都是表的单元格,从上面的示例中,我需要一个3行5列的表

到目前为止,我所指向的内容是:

aslagle:反应表

还可用于编写纯数组。对于我要在表格中显示的内容来说,这是正确的路径还是太复杂了,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用ReactiveVar或ReatciveDict反应显示数据。首先,您需要使其变得可迭代。最好是在Template.onCreated函数中执行此操作。假设您的模板名称为“ myTable”:

Template.myTable.onCreated(function onMyTableCreated() {
  const instance = this
  instance.state = new ReactiveDict()
  instance.state.set('entries', [])

  instance.autorun(() => {
    const obj = // ... however you get your object
    const entries = Object.keys(obj).mapkey => ({
      key:key,
      value: obj[key]
    }))
    instance.state.set('entries', entries)
  })
})

现在,您可以定义一个帮助程序,以正确的格式将您已处理的条目返回到模板:

Template.myTable.helpers({
  entries() {
    return Template.instance().state.get('entries')
  }
})

现在,您可以轻松地遍历条目及其值:

<template name="myTable">
  <table>
  <thead>
    <tr>
    {{#each entries}}
      <th>{{this.key}}</th>
    {{/each}}
    </tr>
  </thead>
  <tbody>
  {{#each entries}}
    <tr>
      <!-- this.value is the array, such as [“1”, “3”, “0”, “0”] -->
      {{#each this.value}}
      <td>{{this}}</td>
      {{/each}}
    </tr>
  {{/each}}
  </tbody>
  </table>
</template>

这里值得带走的东西

  • 对象需要重组为可迭代结构
  • 重组应在onCreated-自动运行(仅在数据更改时重新运行)而不是在助手(可以在渲染周期中多次运行)中进行。
  • 实现自己的表很适合学习Blaze的基础知识
  • 使用包处理复杂的任意数据(注意学习曲线)