GoJS:使用 itemArray 填充 Table
GoJS: Filling a Table using an itemArray
我有一个看起来像这样的模板(我也在使用 jQuery,因此我们的 GraphObject.make 不是 $
而是 _
):
_(go.Panel, 'Table', {
itemTemplate: itemTemplate(_)
},
new go.Binding('itemArray', 'items')
)
当然这部分不是整个模板,我只包括重要的片段。
我现在想做的是制作一个 itemTemplate(_)
实际上 return 一行接一行(取决于 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')
)
);
};
说到这里,我恍然大悟。使用这种方法,我需要 return 2 个面板才能获得预期的输出。
如果有人想知道为什么行上有绑定,我在上面 go.Binding
中使用回调解决了这个问题,如下所示:
new go.Binding('itemArray', 'items',
function(d) {
for (i = 0; i < d.length; i++) {
d[i].row = i;
}
return d;
}
)
所以这是我的问题:是否可以在 itemTemplate 周围有一个包装面板?像这样?
- 面板:Table
- 面板:无行,无列
- 面板:行:1,列:1
- 面板:行:1,列:2
- NextPanel:无行无列
或者是否可以为每一列 return 两个单独的模板?
或者还有其他我不知道的解决方案吗?
是的,Panel.itemTemplate 可以是类型为 TableRow 的 Panel .然后该面板的每个元素都可以适当地设置其列。该行是自动设置的。
中的讨论和示例
我有一个看起来像这样的模板(我也在使用 jQuery,因此我们的 GraphObject.make 不是 $
而是 _
):
_(go.Panel, 'Table', {
itemTemplate: itemTemplate(_)
},
new go.Binding('itemArray', 'items')
)
当然这部分不是整个模板,我只包括重要的片段。
我现在想做的是制作一个 itemTemplate(_)
实际上 return 一行接一行(取决于 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')
)
);
};
说到这里,我恍然大悟。使用这种方法,我需要 return 2 个面板才能获得预期的输出。
如果有人想知道为什么行上有绑定,我在上面 go.Binding
中使用回调解决了这个问题,如下所示:
new go.Binding('itemArray', 'items',
function(d) {
for (i = 0; i < d.length; i++) {
d[i].row = i;
}
return d;
}
)
所以这是我的问题:是否可以在 itemTemplate 周围有一个包装面板?像这样?
- 面板:Table
- 面板:无行,无列
- 面板:行:1,列:1
- 面板:行:1,列:2
- NextPanel:无行无列
- 面板:无行,无列
或者是否可以为每一列 return 两个单独的模板?
或者还有其他我不知道的解决方案吗?
是的,Panel.itemTemplate 可以是类型为 TableRow 的 Panel .然后该面板的每个元素都可以适当地设置其列。该行是自动设置的。
中的讨论和示例