我有一个运行良好的 dijit/Tree。但是,我无法弄清楚如何从 id(商店中的 id,而不是 DOM id)获取特定行的 DOM 节点。
就像是:
myTreeModel.getDomNodeById( id );
我正在使用 dijit/Tree、dijit/tree/ObjectStoreModel 和 dojo/store/memoryStore。
一切似乎都是为了获取存储数据,但我希望更改 dom 节点上的类以响应我应用程序中其他地方的事件。
我有一个运行良好的 dijit/Tree。但是,我无法弄清楚如何从 id(商店中的 id,而不是 DOM id)获取特定行的 DOM 节点。
就像是:
myTreeModel.getDomNodeById( id );
我正在使用 dijit/Tree、dijit/tree/ObjectStoreModel 和 dojo/store/memoryStore。
一切似乎都是为了获取存储数据,但我希望更改 dom 节点上的类以响应我应用程序中其他地方的事件。
最后,xyu的链接给了我答案。
首先,我在实例化树中混合了一个新函数:
var myTree = new Tree(
{
model: treeModel,
autoExpand: true,
showRoot: false,
title: 'My Items',
openOnClick: true,
getDomNodeById: function( id ) // new function to find DOM node
{
return this._itemNodesMap[ id ][0];
}
} );
然后我可以这样称呼它:
var treeNode = myTree.getDomNodeById( dataId );
根据API dijit/Tree
有一个domNode
属性。它应该指向树所在的 DOM 节点。
//code<1.7
dojo.connect('id of tree','onClick',function(evt)
{
console.log(evt.id[0]);
//onclick event tree return id of its node in array
});
//code>1.7
require(['dojo/on'],function()
{
on('id of tree','click',function(evt)
{
console.log(evt.id[0]);
//onclick event tree return id of its node in array
});
});