绑定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);
转换函数能够是命名或匿名函数。他们把数据属性值做为参数,并返回适用于正在设置该属性的值。对象