EasyUIのツリーは再帰的で、フロントエンドは権限を取得していないノードを非表示にします.
1390 ワード
最近のプロジェクトでは、フロントエンドが自分でメニューを保存するjsonノードが必要です.バックグラウンドでは、ノードに戻る権限の有無だけが返されます.つまり、生成されたツリーはフロントエンド生成です.ここではeasyui treeのloadFilterタイムコードを使用します.
私のauthTreeは配列なので[orz,user,bill.......]平面的なので、配列メソッドindexOfを構築します.コードは次のとおりです.
function initJsontree(jsontree) {
for(var i = 0; i < jsontree.length; i++) {
var jn = jsontree[i];
if(jn.code!='group'){
if(!authTree.indexOf(jn.code)) {
jsontree.splice(i, 1)
return;
}
}
if(jn.children && jn.children.length > 0) {
initJsontree(jn.children);
}
}
filterInitJsontree(jsontree)
}
function filterInitJsontree(json){
for (var i = 0; i < json.length; i++) {
var jn = json[i];
if (jn.children&&jn.children.length == 0) {
json.splice(i,1)
return;
}
if (jn.children && jn.children.length > 0) {
filterInitJsontree(jn.children);
}
}
}
initJsontree関数authTree規則に従って対応するjsonノードを削除するために使用され、サブノードがすべて削除された場合、対応する親ノードも削除されるべきであるためfilterInitJsontree関数を呼び出す私のauthTreeは配列なので[orz,user,bill.......]平面的なので、配列メソッドindexOfを構築します.コードは次のとおりです.
Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return true; } return false; };