GoJS:使用itemArray填充表格

时间:2015-08-20 07:46:33

标签: javascript gojs

我有一个看起来像这样的模板(我也使用jQuery,因此我们的GraphObject.make不是$而是_):

_(go.Panel, 'Table', {
      itemTemplate: itemTemplate(_)
    },
    new go.Binding('itemArray', 'items')
)

当然,这部分不是整个模板,我只包含重要的片段。

我现在要做的是制作一个itemTemplate(_),几乎一行返回一行(取决于items数组中的元素数量。

所以我尝试了itemTemplate()这样的

itemTemplate = function(_) {
  return _(
      go.Panel,
      'Horizontal',
      {
        margin: 2
        col: 1
      },
      new go.Binding('row','row')
      _(
        go.Shape,
        'Rectangle',
        {
          stretch: go.GraphObject.Horizontal,
          height: 5
        }
      ),
      _(
        go.TextBlock,
        {
          margin: 2
        },
        new go.Binding('text', 't')
      )
  );
};

我突然意识到这一点。使用这种方法,我需要返回2个面板以获得预期的输出。

如果有人想知道为什么行上有绑定,我使用上面go.Binding中的回调覆盖了这个,看起来像这样:

new go.Binding('itemArray', 'items',
        function(d) {
          for (i = 0; i < d.length; i++) {
            d[i].row = i;
          }
          return d;
        }
      )

所以这里我的问题:是否有可能在itemTemplate周围有一个包装器面板?像这样?

  • 面板:表格
    • 面板:没有行,没有col
      • 面板:行:1,col:1
      • 面板:行:1,col:2
    • NextPanel:没有行没有col

或者是否可以为每列返回两个单独的模板?

还是有另一种我不知道的解决方案吗?

1 个答案:

答案 0 :(得分:1)

是的, Panel.itemTemplate 可以是 TableRow 类型的面板。然后,此面板的每个元素都可以适当地设置其列。该行自动设置。

请参阅http://gojs.net/latest/intro/itemArrays.html

上的讨论和示例