gojs常用API-画布操作
画布
获取当前画布的json | myDiagram.model.toJson(); |
加载json刷新画布 | myDiagram.model = go.Model.fromJson(model); |
删除选中节点或线 | myDiagram.commandHandler.deleteSelection(); |
获取选中的节点或线 myDiagram.selection |
|
获取画布所有节点对象 myDiagram.nodes |
|
节点
添加节点 | myDiagram.model.addNodeData(nodeData); |
删除节点 | myDiagram.model.removeNodeData(nodeData); |
选中单个节点(不能批量选中) | myDiagram.select(node); |
更改属性值 | myDiagram.model.setDataProperty(nodeData, 'color', "#ededed"); |
根据节点数据对象 更改节点属性 myDiagram.model.updateTargetBindings(nodeData); |
|
获取节点对象 | var node=myDiagram.findNodeForKey('key'); |
获取节点data | var nodeData=myDiagram.model.findNodeDataForKey('key'); |
批量删除节点 myDiagram.model.removeNodeDataCollection(nodes) |
|
模糊获取节点(版本1.68以上) 注意值类型,字符串和数值 myDiagram.findNodesByExample(data); 匹配方式默认为===运算符进行比较。 /abc/ 匹配包含“abc”的任何字符串 官网还有更多的匹配方式,这里就不列举了
|
|
线
添加线 | myDiagram.model.addLinkData(linkData); |
删除线 | myDiagram.model.removeLinkData(linkData); |
批量删除线 {Array|iterator} removeLinks removeLinkDataCollection(removeLinks); |
|
模糊获取线(版本1.68以上) 注意值类型,字符串和数值 myDiagram.findLinksByExample(data); 匹配 方式和模糊获取节点的规则一致 |
|
更改属性值 | myDiagram.model.setDataProperty(linkData, 'from', "-2"); |
获取节点的线 {string | null =} PID 端口ID findLinksConnected(PID) |
var node=myDiagram.findNodeForKey('key'); node.findLinksConnected().each(function(link) {console.log(link.data)}); |
获取进入节点的线 {string | null =} PID 端口ID findLinksInto(PID) |
var node=myDiagram.findNodeForKey('key'); node.findLinksInto().each(function(link) {console.log(link.data)}); |
获取从节点出来的线 {string | null =} PID 端口ID findLinksOutOf(PID) |
var node=myDiagram.findNodeForKey('key'); node.findLinksOutOf().each(function(link) {console.log(link.data)}); |
获取A-B节点之间的线 findLinksTo(othernode, PID, otherPID) |
var nodeA=myDiagram.findNodeForKey('key'); var nodeB=myDiagram.findNodeForKey('key'); nodeA.findLinksTo(nodeB).each(function(link) {console.log(link.data)}); |
树节点
根据甲,找甲的祖宗十八代(包括甲) node.findTreeParentChain(); |
|
根据甲,找甲的子孙十八代(包括甲) node.findTreeParts(); |
|
根据甲,找甲的父亲 node.findTreeParentNode(); |
var pNode=node.findTreeParentNode(); |
根据甲,找甲的孩子们 node.findTreeChildrenNodes(); |
|
根据甲,获取甲和其孩子的关系 node.findTreeChildrenLinks(); |
未测 |
gojs操作画布常用API
API | 用例 | |
---|---|---|
增 |
addNodeData(节点对象); addLinkData(线对象); |
|
删 |
removeNodeData(节点对象) removeLinkData(线对象); |
|
改 |
参数: data: nodeData或linkData propname:属性名 val:修改的值 setDataProperty(data, propname, val); |
|
查 |
根据key获取节点data对象 findNodeDataForKey('节点key'); 根据linkData模糊匹配线集合 (gojs1.68以上) findLinksByExample(linkData) |
|
gojs 函数实践
1、添加节点
-
var CreateNode={
-
key:getNextKey(), //设置key的方法,每个节点最好是有自己独立的key
-
"category":"nodeStyleOne", //节点样式选择?nodeStyleOne? => 你自己定义的样式名
-
"loc":"",
-
"text":"节点的text值",//也阔以是动态的值
-
source:“123.svg”,//也阔以是动态的路径
-
}
-
myDiagram.model.addNodeData(CreateNode);
2、动态加线
myDiagram.model.addLinkData({"from":连线起点的key, "to":连线终点key,"category":样式名});
gojs最佳教程: http://www.devtalking.com/categories/%E5%89%8D%E7%AB%AF/
https://liuxiaofan.com/2018/03/16/3521.html
https://www.jianshu.com/p/f91fbf085574
http://www.aubreyling.com/category/javascript/gojs/
参考以上考程,能基本上把gojs弄懂