(3)Gojs model简介

在GoJS中,model用来存储表的基本数据,包括node、link等具体对象和属性,与其在视觉上的展示效果不相关。model中往往只保存相对简单的数据,最方便且持久化方法就是存成json或者xml这种格式的文本。

example:定义只有两个包含两个node的图(nodeDataArray的具体含义见下文)

model.nodeDataArray = [
{ key: "Alpha",text:"α" },
{ key: "Beta" ,text:"β"}
];

①修改model中的数据

此model无法检测到nodeDataArray数组的修改或任何节点数据对象的修改。如果要从nodeDataArray添加或删除节点数据,需要调用addNodeData或removeNodeData等方法。如果想要修改某个node对象,取决于你想修改的属性是model需要知道的结构属性还是只适用于数据绑定或其他目的的属性。对于结构属性,需要调用以"set", "add", "insert", or "remove"等具体的方法,如 setKeyForNodeData, setCategoryForNodeData, GraphLinksModel.setToKeyForLinkData, or GraphLinksModel.setGroupKeyForNodeData等;对于第二种属性,如用于绑定并支持撤销/重做的属性,需要调用setDataProperty方法。

每个model都有自己的UndoManager,默认为禁用。 启用时需要将UndoManager.isEnabled设置为true,以使UndoManager记录model的更改,并为用户执行撤消和重做。

②model的监听事件

每个model都可以通过Model.addChangedListener注册一个监听器,以下方法可以监听model结构属性的改变:

  • "nodeDataArray", Model.nodeDataArray数组被替换式触发
  • "nodeCategory", 调用Model.setCategoryForNodeData时触发
  • "nodeGroupKey", 调用GraphLinksModel.setGroupKeyForNodeData时触发
  • "linkDataArray", GraphLinksModel.linkDataArray数组被替换式触发
  • "linkFromKey", 调用GraphLinksModel.setFromKeyForLinkData时处罚
  • "linkToKey", 调用GraphLinksModel.setToKeyForLinkData时触发
  • "linkFromPortId", 调用GraphLinksModel.setFromPortIdForLinkData时触发
  • "linkToPortId", 调用GraphLinksModel.setToPortIdForLinkData时触发
  • "linkLabelKeys", 调用GraphLinksModel.setLabelKeysForLinkData时触发
  • "linkCategory", 调用GraphLinksModel.setCategoryForLinkData时触发
  • "nodeParentKey", 调用TreeModel.setParentKeyForNodeData时触发
  • "parentLinkCategory", 调用TreeModel.setParentLinkCategoryForNodeData时触发

③model的部分常用属性

  • nodeDataArray 获取或设置与图中的node,group或非链接部件对应的节点数据对象数组,初始值为空数组。
  • nodeKeyProperty 获取或设置返回每个node数据对象的唯一ID号或字符串的data属性的名称。
  • nodeCategoryProperty 获取或设置返回指定数据类别的字符串的node数据属性的名称。
  • name 获取或设置model的名称。
  • modelData 获取一个JavaScript对象,该对象可以保存整个model的中我们自定义的属性值,而不仅仅是一个node或一个link。
  • isReadOnly 获取或设置是否可以修改此model,例如添加node。
  • undoManager 获取或设置此model的underunderManger。

    更多的属性可以查看官方文档 Model Class,一个简单的demo:
<div id="myDiagramDiv" style="width:100%; height:900px; background-color: #DAE4E4;"></div>
<script>
var $ = go.GraphObject.make;
var  diagram  =  $(go.Diagram,  "myDiagramDiv",   {            
initialContentAlignment:  go.Spot.Center      
}); var nodeDataArray = [{
key: "Alpha"
}, {
key: "Beta"
}];
var linkDataArray = [{
from: "Alpha",
to: "Beta"
}];
diagram.model.nodeDataArray = nodeDataArray; //model.nodeDataArray存储node的数据
diagram.model.linkDataArray = linkDataArray; //model.linkDataArray存储Link的数据
</script>

④model的常用方法后续补齐

(3)Gojs model简介的更多相关文章

  1. (2) GoJS Node简介

    node GoJS提供了非常简单的创建Node节点的方法,可将文本内容.结点形状.背景颜色.边距等属性通过数据绑定[go.Binding]直接绑定到对应的Node数据中. 本文简单介绍Node的创建过 ...

  2. Sentry 监控 - Snuba 数据中台架构(Data Model 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  3. User Browsing Model简介

    搜索引擎的点击日志提供了很多有价值的query-doc相关性信息,但是这些信息是有偏的,因为对于用户没有点击过的doc,我们无法确定其是否真实地被用户浏览过.即日志中记录的展现信息与实际的展现信息之间 ...

  4. Office Add-in Model 简介

    原文地址:http://simpeng.net/office-add-in/office-add-in-model-%e7%ae%80%e4%bb%8b/ , 为了本博客内容的完整性,转载至此. Of ...

  5. POM (Project Object Model)简介

    1  概念介绍 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它使用 java1.5 来编译. < ...

  6. 在c++中使用Outlook Object Model发送邮件

    一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...

  7. ASP.NET MVC 3 Model【通过一简单实例一步一步的介绍】

    今天主要讲Model的两个方面: 1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍 2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model ...

  8. Attention Model(注意力模型)思想初探

    1. Attention model简介 0x1:AM是什么 深度学习里的Attention model其实模拟的是人脑的注意力模型,举个例子来说,当我们观赏一幅画时,虽然我们可以看到整幅画的全貌,但 ...

  9. asp.mvc展示model

    1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model 主要负责维持数据状态,将数据从数据存 ...

随机推荐

  1. bzoj3251

    3251: 树上三角形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 637  Solved: 262[Submit][Status][Discuss ...

  2. EF 6.0 The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. c#中的时间

    在SQL server 中,有两种日期时间类型: 1.DateTime 它的范围是 1753-1-1 至 9999-12-31 2.DateTime2 它的满园是 0001-01-01 至 9999- ...

  3. bzoj 3143 [Hnoi2013]游走【高斯消元+dp】

    参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望(还是概率啊我也分不清,以下都分不清)为\( x[u ...

  4. 洛谷P1505 [国家集训队]旅游(树剖+线段树)

    传送门 这该死的码农题…… 把每一条边变为它连接的两个点中深度较浅的那一个,然后就是一堆单点修改/路径查询,不讲了 这里就讲一下怎么搞路径取反,只要打一个标记就好了,然后把区间和取反,最大最小值交换然 ...

  5. thinkphp 中 dump 函数调试数组时显示不全解决方法

    在php.ini里的 xdebug 节点中,加入如下 xdebug.var_display_max_children=128 #子级节点最多显示的的字符数xdebug.var_display_max_ ...

  6. CentOS中设置Windows共享文件夹

    在CentOS中设置Samba可实现和Windows共享文件夹.常见的需求:1)用户能够在Windows机器上通过共享文件夹访问远程Linux服务器上自己的主目录:2)用户能够在Windows机器上访 ...

  7. 第四代增强 NEW BADI的定义及实现

    NEW BADI 是在第四代增强框架下创建的BADI,是相对于第三代增强Classic Badi 而言的. 根据第四代增强的基本概念,所有显式增强Enhancement options 都必须放在增强 ...

  8. 字体使用sp、dp的区别

    Android设置字体大小, 该用sp还是dp? 大部分人肯定脱口而出, 用sp啊, 傻瓜都知道要用sp而不是dp!!! 那么为什么呢? 可能有人会说, 是google官方专门定义了sp这个单位来描述 ...

  9. [CF1076G] Array Game

    Description Transmission Gate Solution 考虑Dp,设Dp[i] 表示当我们从前面跳跃到i时,他是必胜还是必败. 那么\(Dp[i] = Min(Dp[j], !( ...

  10. 51nod 1138 连续整数的和

    1138 连续整数的和  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2). ...