Options
All
  • Public
  • Public/Protected
  • All
Menu

TreeModel 类

层次结构

TreeModels 支持node和link的树状图。 每个node最多可以有一个 "tree parent"; 不允许循环。父node的key是子node data的属性

GraphLinksModels 不同,TreeModels不支持节点之间的任意链接关系,每个父子关系也没有单独的链接数据对象。 此外,不支持对节点进行分组或标记

nodeParentKeyProperty 属性命名node data上的属性,该属性的值是 "tree parent" node的key 此属性的默认值为"parent"

例如,可以定义由一个父节点和两个子节点组成的图:

 model.nodeDataArray = [
   { key: "Alpha" },
   { key: "Beta", parent: "Alpha" },
   { key: "Gamma", parent: "Alpha" }
 ];

如果需要显示比树更复杂的图结构,请使用 GraphLinksModel。 如果要在同一对节点之间有多个链接,或者要与每个链接关联更多信息并且不能将信息放在子节点上,则每个链接都需要有一个单独的链接数据对象,并且,这需要使用 GraphLinksModel

since

1.1

Index

Constructors

constructor

  • 除非提供一个参数作为 Model.nodeDataArray 属性的初始数据,否则这将构造一个空的TreeModel

    Parameters

    • Optional nodedataarray: Array<ObjectData>

      一个可选的Array,其中包含要由Nodes表示的JavaScript对象

    Returns TreeModel

Properties

nodeParentKeyProperty : string | function(a: ObjectData, b?: Key): Key

  • 获取或设置node data上属性的名称,该属性指定充当此"child"node data的"parent"的node data的字符串或数据key。 该值也可以是带有两个参数的函数,其中第一个参数将是node data对象。 如果未提供第二个参数,则函数应返回给定数据对象是child node的parent node 数据对象的字符串或数字key 如果提供了第二个参数,则函数应该修改node data对象,使其具有该新key (可能undefined不指向任何node)作为该node的parent key 默认名 'parent', 这意味着如果node希望通过其他key引用parent node,则它希望数据具有名为'parent'的属性。 该值不能为null或空字符串

    如果要设置此属性,则必须在使用model之前进行设置,尤其是在分配 Diagram.model 之前。 注意,函数无法序列化为JSON格式的文本,因此如果您使用的是 toJsonModel.fromJson,并且希望将此属性作为函数,则需要在创建model后立即将此属性分配给所需要的函数,包括何时由 Model.fromJson 创建

    see

    getParentKeyForNodeData, setParentKeyForNodeData

parentLinkCategoryProperty : string | function(a: ObjectData, b?: string): string

  • 获取或设置数据属性的名称,该属性返回一个字符串,该字符串描述该node数据的's parent link'的类别。 该值也可以是带有两个参数的函数,其中第一个参数将是node data对象 如果未提供第二个参数,则该函数应返回任何parent link的类别名称,否则,该函数将返回类别名称。 如果提供了第二个参数,则函数应该修改node data对象,以便其parent link具有该新的类别名称 默认名为 'parentLinkCategory'。 图表使用它来区分不同种类的link。 名称不能为null。 如果该值为空字符串,则 getParentLinkCategoryForNodeData 将为所有node data对象返回一个空字符串

    如果要设置此属性,则必须在使用model之前进行设置,尤其是在分配 Diagram.model 之前。 注意,函数无法序列化为JSON格式的文本,因此,如果您使用的是 toJsonModel.fromJson,并且希望将此属性作为函数,则需要在创建model后立即将此属性分配给所需的函数,包括何时由 Model.fromJson 创建

    see

    getParentLinkCategoryForNodeData, setParentLinkCategoryForNodeData

Methods

Virtual Override copyNodeData

  • 此替代还确保任何复制的node data都没有对父node的引用

    see

    Model.copyNodeData

    Parameters

    • nodedata: ObjectData

      由node,group,non-link表示的JavaScript对象

    Returns ObjectData | null

getParentKeyForNodeData

getParentLinkCategoryForNodeData

  • getParentLinkCategoryForNodeData(childdata: ObjectData): string

Virtual Override setDataProperty

  • setDataProperty(data: ObjectData, propname: string, val: any): void
  • 此覆盖改变node data或数据项的一些属性的值,给定的一个字符串命名属性和新值,在可撤销/恢复,并且自动更新任何绑定的方式

    这将获得该属性的旧值;如果该值是相同的新的值,不发生副作用

    see

    Model.setDataProperty

    Parameters

    • data: ObjectData

      一个JavaScript对象,通常是 Panel.data 的值,并由 Panel.itemArray 中的Node, Link, Group, simple Part, 或 item 表示;或者是 model' modelData.

    • propname: string

      不能为null或空字符串

    • val: any

      属性的新值

    Returns void

setParentKeyForNodeData

setParentLinkCategoryForNodeData

  • setParentLinkCategoryForNodeData(childdata: ObjectData, cat: string): void
  • 更改给定子node data的父link的类别,这是一个字符串,用于命名该 Diagram 应用于表示该link的模板

    更改link模板将导致将所有现有的 LinkDiagram 中删除,并替换为通过复制新link模板并应用任何数据绑定而创建的新link。 注意,新模板必须是与原始link相同类的实例。因此不能将link的类别从 Link 的实例更改为Link的子类的实例,反之亦然。

    see

    parentLinkCategoryProperty, getParentLinkCategoryForNodeData

    Parameters

    • childdata: ObjectData

      由node表示的JavaScript对象

    • cat: string

      不能为null

    Returns void