gojs 将组模板添加到 .model.nodeDataArray

gojs add group template to .model.nodeDataArray

我们在将组模板添加到页面流文档时遇到问题 https://codesandbox.io/s/keen-saha-1b46y?file=/index.html

首先我们通过创建 groupTemplateMap

添加模板
var palette =
            $(go.Palette, "myPaletteDiv",  // create a new Palette in the HTML DIV element
                {
                    // share the template map with the Palette
                    nodeTemplateMap: myDiagram.nodeTemplateMap,
                    groupTemplateMap: myDiagram.groupTemplateMap,
                    autoScale: go.Diagram.Uniform  // everything always fits in viewport
                });

然后将其放入对象选择器 div(左侧),我们将其添加到

 palette.model.nodeDataArray = [
            {}, // default node
            { category: "Source" },
            { category: "grp" }
        ];

但是组合框不会显示在选取器中,而是 nodeTemplateMap 默认元素的副本。

根据文件,nodeDataArray

Gets or sets the array of node data objects that correspond to Nodes, Groups, or non-Link Parts in the Diagram.

我们如何将组添加到选择器以及我们可以从 nodeTemplateMap

添加标准元素的主要 div

你需要在数据中设置isGrouptrue,而不是仅仅指定它是组模板的哪个类别。请注意,这允许节点模板和组模板具有相同的名称(如默认的空字符串名称)

 palette.model.nodeDataArray = [
            {}, // default node
            { category: "Source" },
            { category: "grp", isGroup: true }
        ];