Menu pokok jEasyUI memuatkan nod ibu bapa/anak


Biasanya cara untuk mewakili nod pokok adalah dengan menyimpan induk dalam setiap nod. Ini juga dikenali sebagai model senarai bersebelahan. Pemuatan terus data ini ke dalam menu pokok (Pokok) tidak dibenarkan. Tetapi kita boleh menukar menu pokok kepada format data menu pokok standard (Pokok) sebelum memuatkannya. Pemalam Tree menyediakan fungsi pilihan 'loadFilter', yang boleh melaksanakan fungsi ini. Ia memberi peluang untuk menukar sebarang data masuk. Tutorial ini menunjukkan kepada anda cara memuatkan nod ibu bapa/anak ke dalam pepohon menggunakan fungsi 'loadFilter'.

110.png

Data nod ibu bapa/anak

	[
	{"id":1,"parendId":0,"name":"Foods"},
	{"id":2,"parentId":1,"name":"Fruits"},
	{"id":3,"parentId":1,"name":"Vegetables"},
	{"id":4,"parentId":2,"name":"apple"},
	{"id":5,"parentId":2,"name":"orange"},
	{"id":6,"parentId":3,"name":"tomato"},
	{"id":7,"parentId":3,"name":"carrot"},
	{"id":8,"parentId":3,"name":"cabbage"},
	{"id":9,"parentId":3,"name":"potato"},
	{"id":10,"parentId":3,"name":"lettuce"}
	]

Gunakan 'loadFilter' untuk mencipta menu pokok (Pokok)

	$('#tt').tree({
		url: 'data/tree6_data.json',
		loadFilter: function(rows){
			return convert(rows);
		}
	});

Pelaksanaan penukaran

	function convert(rows){
		function exists(rows, parentId){
			for(var i=0; i<rows.length; i++){
				if (rows[i].id == parentId) return true;
			}
			return false;
		}
		
		var nodes = [];
		// get the top level nodes
		for(var i=0; i<rows.length; i++){
			var row = rows[i];
			if (!exists(rows, row.parentId)){
				nodes.push({
					id:row.id,
					text:row.name
				});
			}
		}
		
		var toDo = [];
		for(var i=0; i<nodes.length; i++){
			toDo.push(nodes[i]);
		}
		while(toDo.length){
			var node = toDo.shift();	// the parent node
			// get the children nodes
			for(var i=0; i<rows.length; i++){
				var row = rows[i];
				if (row.parentId == node.id){
					var child = {id:row.id,text:row.name};
					if (node.children){
						node.children.push(child);
					} else {
						node.children = [child];
					}
					toDo.push(child);
				}
			}
		}
		return nodes;
	}

Muat turun contoh jQuery EasyUI

jeasyui-tree-tree6.zip