Javascript 如何通过单击YUI3树元素来获取与该元素关联的数据(TreeView构造函数中的“children”)

Javascript 如何通过单击YUI3树元素来获取与该元素关联的数据(TreeView构造函数中的“children”),javascript,treeview,yui,alloy-ui,Javascript,Treeview,Yui,Alloy Ui,例如: 如果我向子数组对象添加一些属性,如: children: [ { label: 'File X', internalId: 24342234, customAttr: 'unicid', } ] var tree.on('click',function(e){ tree.get('lastS

例如:

如果我向子数组对象添加一些属性,如:

    children: [
              {
                label: 'File X',
                internalId: 24342234,
                customAttr: 'unicid',
              }
            ]

  var tree.on('click',function(e){
     tree.get('lastSelected');
  });
在树渲染并单击此树节点后,我无法获取它们。 所有节点都具有以下内置属性:

数据对象与节点相关的任意可序列化数据。当一个节点被序列化为JSON时,使用此属性存储该节点应随附的任何数据

id字符串节点的唯一id。如果在创建节点时未指定自定义id,将自动生成一个

但这对我不起作用

 console.log(tree.get('lastSelected').get('label'));
 [gives "File X"]
 console.log(tree.get('lastSelected').get('customAttr'));
 [gives "undefined"]

我想你可能把YUI的
Y.Tree
类与AlloyUI的
Y.TreeView
类混淆了。您对
id
data
的描述来自,它由
Y.Tree
使用

AlloyUI的
Y.TreeView
类改用
Y.TreeNode
对象,这些对象没有试图用于存储自定义数据的
data
属性。请查看其文档:。要使用AlloyUI实现这一点,您需要添加一些自己的代码。例如,您可以扩展
Y.TreeNode
,将
data
属性添加到子类中,并使用它。或者,您可以将所需数据存储在每个
Y.TreeNode
实例的主节点中,您可以通过
get('boundingBox')
获取该实例,然后在其上使用
setData
getData

即使
Y.TreeNode
具有此
data
属性,您也需要更改代码以在
data
键中添加所需的自定义数据,而不是将它们与其他属性一起添加。例如:

children: [
  {
    label: 'File X',
    data: {
      internalId: 24342234,
      customAttr: 'unicid'
    }
   }
]
然后你就可以通过:

console.log(tree.get('lastSelected').get('data').customAttr);

Maira,我用的是AlloyUI的Y.TreeView课程。也许它有不同的方法从树节点获取一些ID?我试图获取模型数据加载的id,与之关联(departmentEmolyersList),实际上我有department数组和子departments,department还有NAME和id以及子departments。树节点叶子点击后需要获取部门id;从我在代码中看到的情况来看,如果您使用键
id
将id传递给节点,您应该能够在之后通过tree.get('lastSelected').get('id')访问它,尽管您可能需要将其作为字符串而不是整数传递。在您的示例中,您将其作为
internalId
传递,这是不允许的属性。因此,您需要将其更改为仅
id
,或者添加一些类似于我上面列出的示例的代码,将其作为额外数据存储在每个节点上。非常感谢!{id:“number”}对我来说没关系。
console.log(tree.get('lastSelected').get('data').customAttr);