Add shape with binding to node after initialization not working

Hello
Is there a way to add dynamically to an existing node shape with binding?
Example code ( svg does not refresh )

function addExtraPort(node) {
myDiagram.startTransaction(“addport”);
if (!(node instanceof go.Node)) return false;

var port = go.GraphObject.make(go.Shape, "Circle", {
        portId: "x1",
        alignment: new go.Spot(0.7, 0.7),
        desiredSize: new go.Size(10, 10)
    },
    new go.Binding("geometryString", "geo", function(d, e) {
        return "F M0 0 L100 0 Q150 50 100 100 L0 100 Q50 50 0 0z";
    }));
node.add(port);

myDiagram.model.setDataProperty(node.data, "geo", "F M0 0 L100 0 Q150 50 100 100 L0 100 Q50 50 0 0z");
myDiagram.model.updateTargetBindings(node.data);
myDiagram.commitTransaction("addport");

}

Yes, there is a way to achieve this, by data binding the Panel.itemArray property and providing a Panel.itemTemplate.
Read http://gojs.net/latest/intro/itemArrays.htm

Samples that demonstrate this:
http://gojs.net/latest/samples/IVRtree.html (not ports, just a variable list of text)
http://gojs.net/latest/samples/records.html (each item is both a port and a row in a Table Panel)
http://gojs.net/latest/samples/dynamicPorts.html (four arrays, one on each side)