new DataModel()
数据容器ht.DataModel作为承载Data数据的模型, 管理着Data数据的增删以及变化事件派发, HT框架所有组件都是通过绑定DataModel,以不同的形式呈现到用户界面; 同时组件也会监听DataModel模型的变化事件, 实时同步更新界面数据信息, 掌握了DataModel的操作就掌握了所有组件的模型驱动方式。
Methods
- 
    
a(name, value) → {Object}
 - 
    
    
    
    
    
    
    
    
    
        
Parameters:
Name Type Argument Description nameString 属性名
valueObject <optional> 
属性值
Returns:
- Type
 - Object
 
 - 
    
add(data, index)
 - 
    
    
    
增加数据元素
Parameters:
Name Type Argument Description dataht.Data 数据元素
indexNumber <optional> 
插入索引
 - 
    
addDataModelChangeListener(listener, scope, ahead)
 - 
    
    
    
增加数据模型增删变化事件监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
- See:
 
Example
dataModel.addDataModelChangeListener(function(event) { //event格式: { kind: "add"|"remove"|"clear",//事件类型 data: data//事件相关data } }); - 
    
addDataPropertyChangeListener(listener, scope, ahead)
 - 
    
    
    
增加模型中Data元素属性变化事件监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
- See:
 
Example
dataModel.addDataPropertyChangeListener(function(event) { //event格式: { property: "name",//发生变化的属性 data: data,//属性发生变化的data oldValue: 0,//旧值 newValue: 1//新值 } }); - 
    
addHierarchyChangeListener(listener, scope, ahead)
 - 
    
    
    
增加监听器,监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
- See:
 
Example
dataModel.addHierarchyChangeListener(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧层次 newIndex: 1//新层次 } }); - 
    
addIndexChangeListener(listener, scope, ahead)
 - 
    
    
    
增加监听器,监听Data在DataModel中的索引(用于拓扑组件)变化事件
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
Example
dataModel.addIndexChangeListener(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧索引 newIndex: 1//新索引 } }); - 
    
clear()
 - 
    
    
    
删除容器中所有Data对象,该操作一次性清空,没有逐个remove的过程,不会影响Data父子关系
 - 
    
contains(data) → {Boolean}
 - 
    
    
    
判断容器是否包含该data对象
Parameters:
Name Type Description dataht.Data 要判断的数据元素
Returns:
容器是否包含参数data
- Type
 - Boolean
 
 - 
    
deserialize(json, rootParent, setId) → {ht.List}
 - 
    
    
    
反序列化数据到数据容器
Parameters:
Name Type Description jsonString 要被反序列化的json字符串
rootParentht.Data 指定反序列化的数据元素的父元素
setIdBoolean 反序列化后的数据元素是否保留原id
Returns:
被反序列化的数据元素集合
- Type
 - ht.List
 
 - 
    
each(func, scope)
 - 
    
    
    
提供一个回调函数遍历此容器
Parameters:
Name Type Argument Description funcfunction 遍历函数
scopeObject <optional> 
函数域
Example
dataModel.each(function(data) { console.log(data); }); - 
    
eachByBreadthFirst(func, data, scope)
 - 
    
    
    
以data为起始广度优先遍历Data对象
Parameters:
Name Type Argument Description funcfunction 遍历函数
dataht.Data <optional> 
遍历起点元素
scopeObject <optional> 
函数域
 - 
    
eachByDepthFirst(func, data, scope)
 - 
    
    
    
以data为起始深度优先遍历Data对象
Parameters:
Name Type Argument Description funcfunction 遍历函数
dataht.Data <optional> 
遍历起点元素
scopeObject <optional> 
函数域
 - 
    
getAttr(name) → {Object}
 - 
    
    
    
获取attr属性
Parameters:
Name Type Description nameString 属性名
Returns:
- Type
 - Object
 
 - 
    
getAttrObject() → {Object}
 - 
    
    
    
获取attr属性对象,该属性默认为空,用于存储用户业务信息
Returns:
attr属性对象
- Type
 - Object
 
 - 
    
getDataById(id) → {ht.Data}
 - 
    
    
    
根据id快速查找Data对象,模型内部维护着一个id->data的映射表,因此查找速度比遍历方式快
Parameters:
Name Type Description idString | Number 要查找的id
Returns:
查找到的Data
- Type
 - ht.Data
 
 - 
    
getDataByTag(tag) → {ht.Data}
 - 
    
    
    
根据tag快速查找,模型内部维护着一个tag->data的映射表,因此查找速度比遍历方式快
Parameters:
Name Type Description tagString | Number 要查找的tag
Returns:
查找到的Data
- Type
 - ht.Data
 
 - 
    
getDatas() → {ht.List}
 - 
    
    
    
获取所有添加到容器的Data数据集合
Returns:
- Type
 - ht.List
 
 - 
    
getHistoryManager() → {ht.HistoryManager}
 - 
    
    
    
获取历史管理器
Returns:
- Type
 - ht.HistoryManager
 
 - 
    
getRoots() → {ht.List}
 - 
    
    
    
获取所有parent为空的Data对象
Returns:
- Type
 - ht.List
 
 - 
    
getSelectionModel() → {ht.SelectionModel}
 - 
    
    
    
获取该容器的选择模型
- See:
 
Returns:
- Type
 - ht.SelectionModel
 
 - 
    
getSerializableAttrs() → {Object}
 - 
    
    
    
此函数返回一个map,决定序列化时哪些attr属性可被序列化,默认所有attr对象里的属性都会被序列化
Returns:
需要被序列化的attr属性map
- Type
 - Object
 
Example
function(){ var name, map = {}; for (name in this._attrObject) { map[name] = 1; } return map; } - 
    
getSiblings(data) → {ht.List}
 - 
    
    
    
获取和data同父子层次的兄弟数组,如果data父亲为空,则返回dataModel.getRoots()
Parameters:
Name Type Description dataht.Data 目标data
Returns:
- Type
 - ht.List
 
 - 
    
isAutoAdjustIndex() → {Boolean}
 - 
    
    
    
是否自动调整data在容器中索引顺序
Returns:
- Type
 - Boolean
 
 - 
    
isEmpty() → {Boolean}
 - 
    
    
    
判断容器是否为空
Returns:
- Type
 - Boolean
 
 - 
    
md(listener, scope, ahead)
 - 
    
    
    
增加模型中Data元素属性变化事件监听器,addDataPropertyChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
Example
dataModel.md(function(event) { //event格式: { property: "name",//发生变化的属性 data: data,//属性发生变化的data oldValue: 0,//旧值 newValue: 1//新值 } }); - 
    
mh(listener, scope, ahead)
 - 
    
    
    
增加监听器,监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件,addHierarchyChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
Example
dataModel.mh(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧层次 newIndex: 1//新层次 } }); - 
    
mm(listener, scope, ahead)
 - 
    
    
    
增加数据模型增删变化事件监听器,addDataModelChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
aheadBoolean <optional> 
是否将当前监听器插入到监听器列表开头
Example
dataModel.mm(function(event) { //event格式: { kind: "add"|"remove"|"clear",//事件类型 data: data//事件相关data } }); - 
    
moveDown(data)
 - 
    
    
    
移动data到同层兄弟数组中的下一个位置
Parameters:
Name Type Description dataht.Data 要移动的数据元素
 - 
    
moveSelectionDown(sm)
 - 
    
    
    
移动当前选中的数据元素到同层兄弟数组中的下一个位置
Parameters:
Name Type Argument Description smht.SelectionModel <optional> 
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
 - 
    
moveSelectionToBottom(sm)
 - 
    
    
    
移动当前选中的数据元素到同层兄弟数组的底部
Parameters:
Name Type Argument Description smht.SelectionModel <optional> 
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
 - 
    
moveSelectionToTop(sm)
 - 
    
    
    
移动当前选中的数据元素到同层兄弟数组的顶部
Parameters:
Name Type Argument Description smht.SelectionModel <optional> 
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
 - 
    
moveSelectionUp(sm)
 - 
    
    
    
移动当前选中的数据元素到同层兄弟数组中的上一个位置
Parameters:
Name Type Argument Description smht.SelectionModel <optional> 
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
 - 
    
moveTo(data, newIndex)
 - 
    
    
    
移动数据元素到同层兄弟数组中的指定索引
Parameters:
Name Type Description dataht.Data 要移动的数据元素
newIndexNumber 目标索引
 - 
    
moveToBottom(data)
 - 
    
    
    
移动数据元素到同层兄弟数组的底部
Parameters:
Name Type Description dataht.Data 要移动的数据元素
 - 
    
moveToTop(data)
 - 
    
    
    
移动数据元素到同层兄弟数组的顶部
Parameters:
Name Type Description dataht.Data 要移动的数据元素
 - 
    
moveUp(data)
 - 
    
    
    
移动数据元素到同层兄弟数组中的上一个位置
Parameters:
Name Type Description dataht.Data 要移动的数据元素
 - 
    
onAdded(data)
 - 
    
    
    
数据元素添加的回调函数,可重载做后续处理
Parameters:
Name Type Description dataht.Data 新添加的数据元素
 - 
    
onDataPropertyChanged(data, e)
 - 
    
    
    
数据元素属性变化回调函数,可重载做后续处理
Parameters:
Name Type Description dataht.Data 发生变化的数据元素
eObject 事件信息
 - 
    
onRemoved(data)
 - 
    
    
    
数据元素删除时回调函数,可重载做后续处理
Parameters:
Name Type Description dataht.Data 被删除的数据元素
 - 
    
remove(data)
 - 
    
    
    
删除数据元素,该操作有以下副作用:
- 其子孙被递归从DataModel中删除
 - 被断开父子关系data.setParent(null)
 - Edge类型通过edge.setSource(null)和data.setTarget(null)断开节点关系
 - Node类型会将其关联的连线从DataModel中删除
 - Node类型通过data.setHost(null)断开与宿主吸附节点关系
 
Parameters:
Name Type Description dataht.Data 要删除的数据元素
 - 
    
removeDataById(id)
 - 
    
    
    
通过id删除数据元素
Parameters:
Name Type Description idNumber 要删除的数据元素id
- See:
 
 - 
    
removeDataByTag(tag)
 - 
    
    
    
通过tag删除数据元素
Parameters:
Name Type Description tagString 要删除的数据元素tag
- See:
 
 - 
    
removeDataModelChangeListener(listener, scope)
 - 
    
    
    
删除数据模型增删变化事件监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
- See:
 
 - 
    
removeDataPropertyChangeListener(listener, scope)
 - 
    
    
    
删除模型中Data元素属性变化事件监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
- See:
 
 - 
    
removeHierarchyChangeListener(listener, scope)
 - 
    
    
    
删除监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件的监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
- See:
 
 - 
    
removeIndexChangeListener(listener, scope)
 - 
    
    
    
删除监听Data在DataModel中的索引(用于拓扑组件)变化事件的监听器
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
 - 
    
sendToBottom(data)
 - 
    
    
    
将data在拓扑上置底
Parameters:
Name Type Description dataht.Data 要置底的数据元素
 - 
    
sendToTop(data)
 - 
    
    
    
将data在拓扑上置顶
Parameters:
Name Type Description dataht.Data 要置顶的数据元素
 - 
    
serialize(space)
 - 
    
    
    
将数据模型序列化成JSON格式字符串
Parameters:
Name Type Description spaceNumber 缩进空格数
 - 
    
setAttr(name, value)
 - 
    
    
    
设置attr属性
Parameters:
Name Type Description nameString 属性名
valueObject 属性值
 - 
    
setAttrObject(attrObject)
 - 
    
    
    
设置attr属性对象,该属性默认为空,用于存储用户业务信息
Parameters:
Name Type Description attrObjectObject attr属性对象
 - 
    
setAutoAdjustIndex(autoAdjustIndex)
 - 
    
    
    
设置是否自动调整data在容器中索引顺序
Parameters:
Name Type Description autoAdjustIndexBoolean 是否自动调整data在容器中索引顺序
 - 
    
size() → {Number}
 - 
    
    
    
返回当前容器中Data对象的总数
Returns:
- Type
 - Number
 
 - 
    
sm() → {ht.SelectionModel}
 - 
    
    
    
获取该容器的选择模型
- See:
 
Returns:
- Type
 - ht.SelectionModel
 
 - 
    
toDatas(matchFunc, scope) → {ht.List}
 - 
    
    
    
以matchFunc为过滤函数构建新的元素集合并返回
Parameters:
Name Type Argument Description matchFuncfunction <optional> 
过滤函数
scopeObject <optional> 
函数域
Returns:
元素集合
- Type
 - ht.List
 
 - 
    
toJSON() → {Object}
 - 
    
    
    
将数据模型序列化成JSON格式对象
Returns:
JSON对象
- Type
 - Object
 
 - 
    
umd(listener, scope)
 - 
    
    
    
删除模型中Data元素属性变化事件监听器,removeDataPropertyChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
 - 
    
umh(listener, scope)
 - 
    
    
    
删除监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件的监听器,removeHierarchyChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域
 - 
    
umm(listener, scope)
 - 
    
    
    
删除数据模型增删变化事件监听器,removeDataModelChangeListener的缩写
Parameters:
Name Type Argument Description listenerfunction 监听器函数
scopeObject <optional> 
监听器函数域