yui-tree动态加载树
2013年12月09日
⁄ 综合
⁄ 共 6787字 ⁄ 字号
小 中 大
- (function(){
- var tree, currentIconMode=0,tempNode;
-
- var oTextNodeMap = {};
-
-
- var oCurrentTextNode = null;
- function loadNodeData(node, fnLoadComplete){
- var sUrl = "tree/orgTree!buildOrgTree.action?node=" + node.data.id;
- var callback = {
- success: function(oResponse){
- var oResults = eval("(" + oResponse.responseText + ")");
- if (oResults && (oResults.length)) {
- for (var i = 0, j = oResults.length; i < j; i++) {
- tempNode = new YAHOO.widget.TextNode(oResults[i], node, false);
- tempNode.label = oResults[i].text;
- tempNode.isLeaf = oResults[i].leaf;
- oTextNodeMap[tempNode.labelElId]=tempNode;
- }
- }
- else {
- alert("返回数据错误!");
- }
-
-
-
-
- fs.firstChild.style.fontStyle="";
- oResponse.argument.fnLoadComplete();
- },
- failure: function(oResponse){
- alert("异步请求失败!");
- fs.firstChild.style.fontStyle="";
- oResponse.argument.fnLoadComplete();
- },
-
-
-
- argument: {
- "node": node,
- "fnLoadComplete": fnLoadComplete
- },
- timeout: 7000
- };
- YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
- var fs=node.getEl();
- fs.firstChild.style.fontStyle="italic";
- }
-
- function buildTree(){
- tree = new YAHOO.widget.TreeView("OrgTree-div");
- tree.setDynamicLoad(loadNodeData, currentIconMode);
- tree.setExpandAnim("SlidDown");
- tree.setCollapseAnim("SlidUp");
- var root = tree.getRoot();
- var f=new YAHOO.widget.TextNode({
- label: "root",
- id: 0
- }, root, false);
- oTextNodeMap[f.labelElId]=f;
- tree.draw();
- f.expand();
- buildContextMenu();
- }
- var init=function(){
- buildTree();
- }
-
- var buildContextMenu=function(){
-
- function onTriggerContextMenu(p_oEvent) {
- var oTarget = this.contextEventTarget,
- Dom = YAHOO.util.Dom;
-
- var oTextNode = Dom.hasClass(oTarget, "ygtvlabel") ?
- oTarget : Dom.getAncestorByClassName(oTarget, "ygtvlabel");
- if (oTextNode) {
- oCurrentTextNode = oTextNodeMap[oTarget.id];
- }
- else{
-
- this.cancel();
- }
- }
-
- function refresh(){
- if(oCurrentTextNode.children.length){
- tree.removeChildren(oCurrentTextNode);
- var t=setInterval(
- function(){
- if(!oCurrentTextNode.children.length){
- clearInterval(t);
- tree.unsubscribe("animComplete");
- setTimeout(function(){oCurrentTextNode.expand()},200);
- return;
- }
- },200);
- }else{
- oCurrentTextNode.expand();
- }
- }
-
-
- var oContextMenu = new YAHOO.widget.ContextMenu("mytreecontextmenu", {
- trigger: "OrgTree-div",
- lazyload: true,
- itemdata: [
- { text: "增加项目",classname:"pro"},
- { text: "增加计划",classname:"proplan"},
- { text: "增加项目资源",classname:"proresource"},
- { text: "修改",classname:"modify"},
- { text: "查看",classname:"view"},
- { text: "刷新",classname:"refresh",onclick:{fn:refresh}},
- { text: "发送IM",classname:"im"}
- ] });
-
- oContextMenu.subscribe("triggerContextMenu", onTriggerContextMenu);
- }
-
-
- YAHOO.util.Event.onDOMReady(init);
- })();