解析 dijit.tree 中的节点

Parse nodes in a dijit.tree

我正在为 dijit.Tree 苦苦挣扎,我在 dojo 文档中找不到我需要的东西...

我想根据某些条件更改树中一些元素的样式。

我能够通过 for 循环和 if 评估的组合来识别元素:

itemList = this.tree.model.store._arrayOfAllItems;
for (var index in itemList) {
    item = itemList[index];
    if (item.<property> == ...) {
       ...
       //This is where I want to change the style
       ...
    }
    ...
}

但是,我无法获取节点 ID 来调用 dojo.addClass(nodeId, newClass)。

我是否使用 model.store._arrayOfAllItems 解析了正确的列表?有没有办法通过节点列表来解析,并且仍然访问数据属性?

非常感谢您的帮助!


编辑于 2015-11-23

有了理查德的评论,我得到了我想要的结果。我添加了一个处理程序,将树的 onOpen 事件连接到一个方法,该方法获取打开的节点映射(来自 tree._itemNodesMap),然后通过商店获取。对于商店中的每个项目,如果正在验证的项目的 id 在开放节点映射中有关联节点,它会调整 css。然后递归查找 children.

感谢理查德的帮助!

如果你有树内部节点的id,你可以使用树有的getNodesByItem函数。

尽管如果您的树是动态的并且内容可以更改,我建议编写一个函数,它不仅可以添加到您的商店,还可以添加到树中形成的节点的 class。