【发布时间】:2020-06-08 21:05:12
【问题描述】:
给定以下 JSON 数组:
[{"ID":12,"NAME":"ktc","PARENTID":0},
{"ID":11,"NAME":"root","PARENTID":0},
{"ID":1,"NAME":"rwhitney","PARENTID":0},
{"ID":21,"NAME":"shared folder","PARENTID":0},
{"ID":2,"NAME":".config","PARENTID":1},
{"ID":5,"NAME":"wallpapers","PARENTID":1},
{"ID":3,"NAME":"geany","PARENTID":2},
{"ID":4,"NAME":"colorschemes","PARENTID":3},
{"ID":13,"NAME":"efast","PARENTID":12},
{"ID":15,"NAME":"includes","PARENTID":13},
{"ID":14,"NAME":"views","PARENTID":13},
{"ID":17,"NAME":"css","PARENTID":15},
{"ID":16,"NAME":"js","PARENTID":15}]
我需要构建一个菜单树,其中包含嵌套在父文件夹下的子文件夹。
这是一些服务器端代码:
socket.on('get-folders', function(data){
var folders = [];
getSession(session.key, function(currSession){
db.rows('getFolders', currSession, [currSession.user], function(err, rows){
if (err) {
socket.emit('err', 'Error is: ' + err );
} else if(rows[0]){
//~ folders.push(JSON.stringify(rows));
socket.emit('get-folders', JSON.stringify(rows));
//~ n_Folders(rows, currSession, socket, folders, 0);
}
});
});
});
和客户端:
function rtnSocket(cmd, data, cb){
socket.emit(cmd, data);
socket.on(cmd, cb);
}
rtnSocket('get-folders', folderid, function(data){
console.log(data);
});
有人可以帮助指导我正确的方向吗?
【问题讨论】:
-
为此使用现有的库通常会更好。
-
谢谢,但我需要学习树状菜单的机制。如果可以的话,我不想使用图书馆。
-
好吧,我以为它是针对一些真正的项目的。 (我认为它会浪费很多时间)。
-
为什么树形菜单需要服务器端?
-
安全,它是针对一个真实项目的
标签: javascript arrays node.js json tree