EasyUIのツリーは再帰的で、フロントエンドは権限を取得していないノードを非表示にします.

1390 ワード

最近のプロジェクトでは、フロントエンドが自分でメニューを保存するjsonノードが必要です.バックグラウンドでは、ノードに戻る権限の有無だけが返されます.つまり、生成されたツリーはフロントエンド生成です.ここではeasyui treeのloadFilterタイムコードを使用します.
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; };