繁体   English   中英

敲除js,从树状视图中选择的项目中找到所有父节点ID

[英]knockout js, find all the parent nodes id from a item selected in tree view

我们正在创建具有n(any)个级别的树视图。

我已经采取了这种树解决方案 ,但是现在我遇到了一个问题。

我们希望从所选节点中获取所有父节点id

谁能帮我们解决这个问题?

从我所看到的,您可以获得当前所选节点的ID,它已经是父ID的串联。

更换

  <div data-bind="with: selected">
    Selected Node:                 <span data-bind="text: name"></span>
  </div>

  <div data-bind="with: selected">
    Selected Node:                 <span data-bind="text: name"></span>
    Ids: <span data-bind="text: id"></span>
  </div>

如果要使用具有所有父代ID的数组,则可以执行以下操作:

  1. 向每个treenode( parent )添加一个parent属性,并将其填充到构造函数中
  2. 添加一个父ID数组( parentIds
  3. 创建一个将遍历所有TreeNode并填充parentIds数组的函数

检查以下代码(1.和2):

function TreeNode(values) {
      var self = this;
      ko.mapping.fromJS(values, { children: { create: createNode }}, this);
      this.expanded = ko.observable(false);
      for (var i = 0; i < this.children().length; i++)
          this.children()[i].parent = this;
      this.parentIds = [];
      this.collapsed = ko.computed(function() {
      return !self.expanded();
    })
  }

而这个(3.):

function setParents(rootNode) {
    if (ko.isObservable(rootNode.children) && rootNode.children().length)
      for (var i = 0; i < rootNode.children().length; i++) {
        if (rootNode.children()[i].parent)
          rootNode.children()[i].parentIds = rootNode.children()[i].parent.parentIds.slice(0);
        rootNode.children()[i].parentIds.push(rootNode.children()[i].parent.id())
        setParents(rootNode.children()[i]);
      }
  }

  setParents(root);

你可以在这里查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM