GoJS 绘图 (九) :数据绑定

绑定字符串和数字特性

绑定GraphObject数据的属性。在这个例子中,咱们不只绑定TextBlock.text和Shape.fill中的节点到节点数据的属性值,对于线条咱们也结合Shape.stroke和Shape.strokeWidth中的数据的属性值。javascript

全部你须要作的就是添加目标GraphObject一个新的绑定对象和数据对象的属性。固然,目标属性必须是一个可设置属性;若是指定了一个不存在的,你会在控制台中看到警告信息的属性名称。若是源属性值是未定义,则不计算。java

var diagram = new go.Diagram('diagram');
var g = go.GraphObject.make;

diagram.nodeTemplate = g(
    go.Node,
    'Auto',
    g(
        go.Shape,
        'RoundedRectangle',
        { fill: '#fff' },
        new go.Binding('fill', 'color')
    ),
    g(
        go.TextBlock,
        new go.Binding('text', 'text')
    )
)
diagram.linkTemplate = g(
    go.Link,
    g(
        go.Shape,
        new go.Binding('stroke', 'color'),
        new go.Binding('strokeWidth', 'thick')
    ),
    g(
        go.Shape,
        { toArrow: 'OpenTriangle', fill: null}
    )
)
var nodeDataArray = [
    { key:'1', text: 'hello1', color: '#345'},
    { key:'2', text: 'hello2', color: '#245'},
    { key:'3', text: 'hello3'}
]
var linkDataArray = [
    {from: '1', to: '2', color: '#452', thick: 2},
    {from: '2', to: '3', color: '#452', thick: 2},
]
diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);

绑定对象的属性

您也能够绑定具备对象值的属性。例如常见的Part.location。node

Part.location的值是一个点,所以,在本实例中的数据属性必须是一个点。函数

diagram.nodeTemplate = g(
    go.Node,
    'Auto',
    new go.Binding('location', 'loc'),
    g(
        go.Shape,
        'RoundedRectangle',
        { fill: '#fff' },
        new go.Binding('fill', 'color')
    ),
    g(
        go.TextBlock,
        new go.Binding('text', 'text')
    )
)
diagram.linkTemplate = g(
    go.Link,
    g(
        go.Shape,
        new go.Binding('stroke', 'color'),
        new go.Binding('strokeWidth', 'thick')
    ),
    g(
        go.Shape,
        { toArrow: 'OpenTriangle', fill: null}
    )
)
var nodeDataArray = [
    { key:'1', text: 'hello1', color: '#345', loc: new go.Point(0, 0)},
    { key:'2', text: 'hello2', color: '#245', loc: new go.Point(0, 100)},
    { key:'3', text: 'hello3', loc: new go.Point(0, 200)}
]
var linkDataArray = [
    {from: '1', to: '2', color: '#452', thick: 2},
    {from: '2', to: '3', color: '#452', thick: 2},
]
diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);

转换功能

你能够经过转换函数的第三个参数绑定构造函数。在这种状况下Point.parse。容许位置字符串(“100 50”)的形式来指定,而不是做为一个表达式的点。code

diagram.nodeTemplate = g(
    go.Node,
    'Auto',
    new go.Binding('location', 'loc', go.Point.parse),
    g(
        go.Shape,
        'RoundedRectangle',
        { fill: '#fff' },
        new go.Binding('fill', 'color')
    ),
    g(
        go.TextBlock,
        new go.Binding('text', 'text')
    )
)
diagram.linkTemplate = g(
    go.Link,
    g(
        go.Shape,
        new go.Binding('stroke', 'color'),
        new go.Binding('strokeWidth', 'thick')
    ),
    g(
        go.Shape,
        { toArrow: 'OpenTriangle', fill: null}
    )
)
var nodeDataArray = [
    { key:'1', text: 'hello1', color: '#345', loc: '0, 0'},
    { key:'2', text: 'hello2', color: '#245', loc: '0, 150'},
    { key:'3', text: 'hello3', loc: '0, 250'}
]
var linkDataArray = [
    {from: '1', to: '2', color: '#452', thick: 2},
    {from: '2', to: '3', color: '#452', thick: 2},
]
diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);

转换函数能够是命名或匿名函数。他们把数据属性值做为参数,并返回适用于正在设置该属性的值。对象

相关文章
相关标签/搜索