得到一个道场节点时,我有实体店的产品ID(getting a dojo node when I ha

2019-10-18 23:59发布

我有一个dijit.Tree ,用一个填充ItemFileReadStore使用JSON。 因为我们的设置,我需要每次被点击树节点的时间做一个新的请求。 该树是使用cookies记住哪些文件夹进行扩张,而不得,所以这不是一个问题。 但是我想将焦点设置到被点击的节点。

我已经成功通过设置它的ID作为URL参数来从商店模式的项目:

store.fetchItemByIdentity({identity:openNode, onItem:focusOpenNode(item)});
function focusOpenNode(item) {
    //I've got the item, now how do I get the node so I can do:
    var node = getNodeFromItem(item); //not a real method...
    treeControl.focusNode(node);
}

但我似乎无法找到一种方式来获得的项目ID匹配的节点。

Answer 1:

当您创建树形控件,通过在作为构造PARAMS的则params的一个或使用dojo.mixin添加到树部件:

/*tree helper function to get the tree node for a store item*/
getNodeFromItem: function (item) {  
    return this._itemNodesMap[item.name[0]];
}

(这将是更加整洁使用树的商店的getAttribute来获取项目的名称 - 但这个例子不被抛光。)

然后,你可以这样做:

function focusOpenNode(item) {
    //I've got the item, now how do I get the node so I can do:

    var node = treeControl.getNodeFromItem(item); //now a real method...
    treeControl.focusNode(node);
}


Answer 2:

伟大的答案,我已经看到了这个以多种方式进行,但是这是最简单的(和最好)。

我不得不修改了一点,因为我是如何使用的控制。

取而代之的this._itemNodesMap[item.name[0]] ,我用this._itemNodesMap[item.id]



文章来源: getting a dojo node when I have the store item id
标签: dojo