使用DataTables(Meteor Tabular)在新行中绘制数组的每个元素

时间:2016-01-15 12:32:35

标签: javascript meteor datatables

我正在使用实施Tabular package的Meteor DataTables。我正在尝试从Mongo集合创建一个表。该集合有一个

形式的文档
{
  input: Array[365],
  output: Array[365],
  date: Array[365]
}

我使用以下代码

在Meteor中定义表格
TabularTables.MyTable = new Tabular.Table({
    name: "MyTable",
    collection: MyTable,
    columns: [
        {data: "input", title: "Input", searchable: false},
        {data: "output", title: "Output", searchable: false},
        {data: "date", title: "Date", searchable: false}
    ],
    order: [[1, "desc"]],
    pageLength: 10
});

问题在于,当绘制它时,每个变量的所有365个元素最终都在一个单元格中,所以我有一个大的行。我希望每个元素都在一个单独的行中创建,即

Input      Output      Date
input[0]   output[0]   date[0]
input[1]   output[1]   date[1]

虽然它目前是

Input            Output            Date
input[0...364]   output[0...364]   date[0...364]

2 个答案:

答案 0 :(得分:3)

您将需要转换数据然后将其放入本地集合中,因为该包不接受数组(与我之前的想法相反)。

这似乎有效:

TabularTables = {};
local =  new Meteor.Collection();

var data = MyTable.findOne();
if (data) {
    local.find().forEach(function(x) { local.remove(x._id) });
    for (var i in data.input) {
        local.insert({
            input: data.input[i],
            output: data.output[i],
            date: data.date[i]
        });
    }
}

TabularTables.MyTable = new Tabular.Table({
    name: "MyTable",
    collection: local,
    columns: [
        {data: "input", title: "Input", searchable: false},
        {data: "output", title: "Output", searchable: false},
        {data: "date", title: "Date", searchable: false}
    ],
    order: [[1, "desc"]],
    pageLength: 10
});

请注意,这可能不再具有反应性。但是我假设你在那些大数组中的数据也不会改变,否则你可能会改变你的架构以便与meteor开始时更加兼容。所以希望这不是问题。

答案 1 :(得分:1)

由于TabularTables不允许使用数组,因此您可以尝试使用aslagle:reactive-table Meteor包。包的git page上的示例显示了如何在阵列上使用mongo的语法。