javascript-如何使用递归对象extjs填充存储?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何使用递归对象extjs填充存储?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2311字,纯文字阅读大概需要4分钟。
内容图文
![javascript-如何使用递归对象extjs填充存储?](/upload/InfoBanner/zyjiaocheng/659/0c2f866b9e80432ea19f96a69d81657c.jpg)
我有一个具有这种结构的物体
第一
持续
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());
内容总结
以上是互联网集市为您收集整理的javascript-如何使用递归对象extjs填充存储?全部内容,希望文章能够帮你解决javascript-如何使用递归对象extjs填充存储?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。