使用JQuery.getJSON()从json的文件加载contecxtmenu

时间:2012-04-16 16:03:41

标签: javascript jquery json jstree

我需要从json的文件加载jsTree的contextmenu。 contextmenu保存在此文件(“test.json”)中:

{
    "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;
    });
}

通过这种方式,我看不到上下文菜单。你能救我吗?

1 个答案:

答案 0 :(得分:2)

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

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

这是因为Ajax调用是异步的,因此customMenu()函数没有向"items" "contextmenu"选项返回任何内容。