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);