我正在使用有角JS及其示例之一:http : //jsfiddle.net/furf/EJGHX/
在发送更新功能之前,我需要获取数据并向其中添加一些值。(如果用angular而不是js更好,请告诉我)
我正在尝试获取“父代”和“索引”并更新子代。
这是我正在遍历的数据
{ "children": [{ "id": "5", "parentid": "0", "text": "Device Guides", "index": "1", "children": [{ "id": "10", "index": "0", "text": "Grandstream GXP-21XX" }, { "id": "11", "index": "1", "text": "Polycom Soundstation/Soundpoint" }, { "id": "23", "index": "2", "text": "New Polycom" }] }, { "id": "6", "parentid": "0", "text": "Pre-Sales Evaluation", "index": "0", "children": [] }, { "id": "7", "parentid": "0", "text": "Router Setup Guides", "index": "2", "children": [{ "id": "9", "index": "0", "text": "Sonicwall" }, { "id": "12", "index": "1", "text": "Cisco" }] }, { "id": "9", "parentid": "7", "text": "Sonicwall", "index": "0", "children": [] }, { "id": "10", "parentid": "5", "text": "Grandstream GXP-21XX", "index": "0", "children": [] }, { "id": "11", "parentid": "5", "text": "Polycom Soundstation/Soundpoint", "index": "1", "children": [] }, { "id": "12", "parentid": "7", "text": "Cisco", "index": "1", "children": [] }, { "id": "15", "parentid": "0", "text": "Post-Sales Implementation Check List", "index": "7", "children": [{ "id": "16", "index": "0", "text": "Porting and New Number Details" }, { "id": "18", "index": "1", "text": "Partner Setup" }, { "id": "19", "index": "2", "text": "test" }, { "id": "21", "index": "3", "text": "test" }] }, { "id": "16", "parentid": "15", "text": "Porting and New Number Details", "index": "0", "children": [] }, { "id": "18", "parentid": "15", "text": "Partner Setup", "index": "1", "children": [] }, { "id": "19", "parentid": "15", "text": "test", "index": "2", "children": [] }, { "id": "20", "parentid": "0", "text": "test", "index": "11", "children": [] }, { "id": "21", "parentid": "15", "text": "test", "index": "3", "children": [] }, { "id": "23", "parentid": "5", "text": "New Polycom", "index": "2", "children": [] }, { "id": "24", "parentid": "0", "text": "Test Markup", "index": "14", "children": [] }, { "id": "25", "parentid": "0", "text": "test", "index": "15", "children": [] }] }
这就是我目前正在遍历的方式,但是它只能得到第一个维度
for (i = 0, l = data.length; i < l; i++) { parentid = data[i].id == null ? '0' : data[i].id; data[i].index = i; if (data[i].children) { if (data[i].children.length > 0) { for (q = 0, r = data[i].children.length; q < r; q++) { data[i].children[q].parentid = parentid; data[i].children[q].index = q; } } } }
我在另一个小提琴上找到了这个,但我不知道该如何抓取父对象或索引
$.each(target.children, function(key, val) { recursiveFunction(key, val) }); function recursiveFunction(key, val) { actualFunction(key, val); var value = val['children']; if (value instanceof Object) { $.each(value, function(key, val) { recursiveFunction(key, val) }); } } function actualFunction(key, val) {}
如果我对您的理解正确,那么您希望每个“子代”都有一个parentID(由其父代定义;0否则)和一个index(根据其在同级集中的位置)。
parentID
0
index
function normalize(parent) { if (parent && parent.children) { for (var i = 0, l = parent.children.length; i < l; ++i) { var child = parent.children[i]; child.index = i; if (!child.parentId) child.parentId = parent.id || '0'; normalize(child); } } } normalize(data);