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