我有一个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匹配的节点。
当您创建树形控件,通过在作为构造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);
}
伟大的答案,我已经看到了这个以多种方式进行,但是这是最简单的(和最好)。
我不得不修改了一点,因为我是如何使用的控制。
取而代之的this._itemNodesMap[item.name[0]]
,我用this._itemNodesMap[item.id]