Узел GoJS Custom сохраняет значения по умолчанию

На основе примера http://gojs.net/latest/samples/flowchart.html я создал пользовательские шаблоны узлов, которые выглядят так, как показано ниже.

myDiagram.nodeTemplateMap.add("Action-node",
    $(go.Node, "Spot", nodeStyle(),
        $(go.Panel, "Auto",
            $(go.Shape, "Rectangle",
                { minSize: new go.Size(40, 40), fill: "#FF9191", stroke: null }),
            $(go.Panel, "Vertical",
                $(go.TextBlock, "Start",
                {
                    font: "8pt Helvetica, Arial, sans-serif",
                    margin: 8,
                    stroke: lightText,
                    editable: true
                },
                new go.Binding("text")),
                $(go.TextBlock, "...",
                {
                    font: "8pt Helvetica, Arial, sans-serif",
                    margin: 8,
                    stroke: lightText,
                    editable: true
                },
                new go.Binding("text", "subtitle"))
            )
        ),
        // three named ports, one on each side except the top, all output only:
        makePort("T", go.Spot.Top, false, true),
        makePort("L", go.Spot.Left, true, false),
        makePort("R", go.Spot.Right, true, false),
        makePort("B", go.Spot.Bottom, true, false)
    ));

Проблема в том, что кнопка сохранения (функция save()) вызывает

myDiagram.model.toJson(); 

сохраняет только значения по умолчанию в строку json. Другие вещи, такие как местоположение и ссылка сохраняются правильно. Есть ли проблема с моим пользовательским шаблоном или как я могу сохранить изменения значений узлов в графе?

1 ответ

Решение

Основная идея заключается в том, что если некоторый код (возможно, из-за действий пользователя) изменяет какое- либо свойство GraphObject (например, Node.location или TextBlock.text), и вы хотите, чтобы измененное значение было отражено в объекте данных узла, вы используете привязку TwoWay на этой собственности.

Подробнее о привязке данных читайте по адресу http://gojs.net/latest/intro/dataBinding.html, особенно в последнем разделе.

Как следует из этого последнего раздела, когда у вас есть TextBlock, который можно редактировать, обычно вы хотите создать Binding TwoWay. Это те значения свойств, которые вы надеялись автоматически сохранить в модели?

Другие вопросы по тегам