1

我有一个调色板和图表并排使用相同的模板。

  var template = $(go.Node, "Horizontal",
  $(go.Shape,
    { width: 15, height: 15, fill: "white" },
    new go.Binding("fill", "color")),
  $(go.TextBlock,
    new go.Binding("text", "color"))
);

我想将节点自上而下排列,然后一个节点到达底部,它会扭曲并在前一个“列”旁边再次自上而下开始

有什么想法可以做到这一点吗?我需要更改他的模板还是有一些设置来实现这一点

这是我所拥有的小提琴:http: //jsfiddle.net/loangburger/v61bufs0/

我的最终目标是在调色板中有一个电子邮件列表,然后将它们拖到图表中以获得包含列表

谢谢,

4

1 回答 1

2

我已经找到了解决方案,并将详细回答这个问题,以获得其他人的好处:

为了完成我为调色板和图表拆分模板后的工作,每个模板都有自己的。

在图表上,我不希望节点可拖动,因此我设置了它的模板movable: false,这样用户就不能再次拖动节点。

然后在创建图表时,您可以指定布局。所以使用 GridLayout 我做了以下事情:

var  myDiagram = $(go.Diagram, "myDiagramDiv", 
{
   layout: $(go.GridLayout,
   {
                cellSize: new go.Size(200, 20),
                wrappingColumn: 1
    }),     
   "undoManager.isEnabled": true 
}); 

我指定了一个列。

我还将 contentAlighment 属性设置为左上角:

myDiagram.startTransaction("");
myDiagram.contentAlignment = go.Spot.TopLeft;
myDiagram.commitTransaction("");    

由于我不希望图表节点可拖动,因此我也设置了myDiagram.allowDragOut= false;,以便无法将节点拖出图表。我发现如果我不这样做,即使一个节点在被选中时不可拖动,我也可以拖动选择

对于托盘,其布局概念相同:

  var myPalette = $(go.Palette, "myPaletteDiv",
    {
        layout: $(go.GridLayout,
        {
            cellSize: new go.Size(200, 20),
            wrappingColumn: 1
        })      
    });

并且对于 contentAlighment 属性:

myPalette.startTransaction("");
myPalette.contentAlignment = go.Spot.TopLeft;
myPalette.commitTransaction("");

最终结果可以在这个修改后的 JS Fiddle 中查看:http: //jsfiddle.net/loangburger/v61bufs0/9/

于 2015-01-29T06:25:05.883 回答