我有一个具有这种结构的物体
第一
持续
uid
ID
rels []
Rels是一个数组,其中再次包含具有相同结构的对象.
如何在负载中使用extjs来管理此对象以填充treeStore?我需要保持父母与子女之间的等级关系
例
父母
小孩1
小孩2
侄子1
外phe2
等等.它们都在父节点下.
有什么建议吗?我尝试使用递归函数,但没有结果的几种方式.
这是我的代码(不起作用)
Ext.define('utenti', {
extend: 'Ext.data.Model',
fields: [{
name: 'F',
type: 'string'
},
{
name: 'L',
type: 'string'
},
{
name: 'Uid',
type: 'string'
},
{
name: 'Id',
type: 'string'
}
]
});
var TreeUserStore = Ext.create('Ext.data.TreeStore', {
model: 'utenti',
root: {
text: 'Root',
//id: 'Radice_utenti',
expanded: true
},
listeners: {
load: function eachRecursive(ResObj) {
var childNode;
if (ResObj.Rels.length > 0) {
for (i = 0; i < data.Rels.length; i++) {
eachRecursive(ResObj.Rels[i]);
}
} else {
childNode = Ext.create('utenti', {
F: ResObj.F,
L: ResObj.L,
Uid: ResObj.Uid,
Id: ResObj.Id
});
TreeUserStore.appendChild(child);
}
}
}
});
我找到了从对象中提取数据的函数
function eachRecursive(ResObj, parent) {
if (ResObj.Rels.length > 0) {
var childNodeModel = {
name: ResObj.F + " " + ResObj.L,
text: ResObj.F + " " + ResObj.L,
leaf: false,
children: []
};
alert("padre:" + parent.name + ", figlio:" + childNodeModel.name);
parent.children.push(childNodeModel);
for (var i = 0; i < ResObj.Rels.length; i++) {
eachRecursive(ResObj.Rels[i], childNodeModel);
}
} else {
var childNodeModel = {
name: ResObj.F + " " + ResObj.L,
text: ResObj.F + " " + ResObj.L,
leaf: true
};
alert("padre:" + parent.name + ", figlio:" + childNodeModel.name);
parent.children.push(childNodeModel);
}
}
但是目前,我无法在TreePanel中显示元素.我尝试使用appendChild,但是没有任何结果,我也尝试创建TreeNode,但是它给了我并且错误(例如对象不是函数).
我能怎么做?
提前致谢
解决方法:
您应该使用appendChild节点的方法将子节点添加到层次结构中.
您的递归函数应如下所示:
function eachRecursive(ResObj, parent) {
if (ResObj.Rels.length > 0) {
var childNodeModel = {
name: ResObj.F + " " + ResObj.L,
text: ResObj.F + " " + ResObj.L,
leaf: false,
children: []
};
var childNode = parent.appendChild(childNodeModel);
for (var i = 0; i < ResObj.Rels.length; i++) {
eachRecursive(ResObj.Rels[i], childNode);
}
} else {
var childNodeModel = {
name: ResObj.F + " " + ResObj.L,
text: ResObj.F + " " + ResObj.L,
leaf: true
};
parent.appendChild(childNodeModel);
}
}
然后从根开始填充存储:
eachRecursive(data, TreeUserStore.getRootNode());
原文地址:https://codeday.me/bug/20191122/2059399.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。