2012-04-16 94 views
0

我需要从一个JSON的文件中加载jsTree的文本菜单JSON的文件contecxtmenu。通过ContextMenu在这个文件( “test.json”)保存:负荷使用JQuery.getJSON()

{ 
    "item1" : { 
     "label" : "voce1" 
    }, 
    "item2" : { 
     "label" : "voce2" 
    } 
} 

和代码加载文本菜单是:

$(function() { 

    $("#tree").jstree({ 
     "plugins" : [ "themes", "json_data", "ui", "contextmenu" ], 

     // other code .... 

     "contextmenu" : { 
     "items" : customMenu 
    } 

    }) 
}); 

function customMenu(node) { 

    $.getJSON("test.json", function(json) { 
     return json; 
    }); 
} 

这样,我没有看到文本菜单。你可以帮我吗?

回答

2

我不知道插件如何jstree的作品,但也许你应该尝试不同的方法,首先加载JSON数据使Ajax请求,当它完成,初始化jstree:

$(function() { 
$.getJSON("test.json", function(json) { 
    $("#tree").jstree({ 
    "plugins" : [ "themes", "json_data", "ui", "contextmenu" ], 
    "contextmenu" : { 
     "items" : json 
    } 
    }); 
}); 
}); 

这是因为Ajax调用是异步的,所以你的customMenu()功能不给你"contextmenu"选项"items"东西回来。

+0

感谢,这个问题很简单 – Webman 2012-04-16 18:46:35

+0

是不是Ajax调用异步或同步? – Radek 2012-04-17 22:34:28