从angularJS中的树视图获取叶节点深度

时间:2013-12-17 09:23:02

标签: javascript angularjs treeview

我有一个树视图Json对象是

{
  "Name": "Root",
  "Id": "-1",
  "ParentId": "null",
  "children": [
    {
      "Name": "Math",
      "Id": "1",
      "ParentId": "-1",
      "children": [
        {
          "Name": "Addition",
          "Id": "3",
          "ParentId": "1",
          "children": [
            {
              "Name": "Two Numbers",
              "Id": "5",
              "ParentId": "3",
              "children": []
            },
            {
              "Name": "Three Numbers",
              "Id": "6",
              "ParentId": "3",
              "children": []
            }
          ]
        },
        {
          "Name": "Substraction",
          "Id": "4",
          "ParentId": "1",
          "children": [
            {
              "Name": "Four Numbers",
              "Id": "7",
              "ParentId": "4",
              "children": []
            },
            {
              "Name": "Five Numbers",
              "Id": "8",
              "ParentId": "4",
              "children": []
            }
          ]
        }
      ]
    },
    {
      "Name": "English",
      "Id": "1",
      "ParentId": "-1",
      "children": []
    }
  ],
  "selected": "selected"
}

如果我选择“两个数字”叶子节点,mytree.currentNode.Name只显示“两个数字”,但我想从叶子节点的深度显示。 “根/数学/加法/两个数字” 有没有办法显示?
请帮我。提前致谢

1 个答案:

答案 0 :(得分:0)

你所采取的设计决策让你难以获得整个深度。

存储分层数据的方法有两种。使用引用或使用ID。不要混搭。

如果保留父项的引用,而不是ParentId,那么您将非常容易地沿着整个树行走。

如果要使用父ID,则使用ID和对象的字典而不是嵌套子项。通过这种方式,您也可以非常轻松(快速)遍历树