2012-04-16 7 views
0

jsonのファイルからjsTreeのコンテキストメニューをロードする必要があります。コンテキストメニューは、この、このファイル(「test.json」)に保存されます。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知らないが、多分あなたは別のアプローチを試してみてください、最初のAjaxリクエストを作成するJSONデータをロードし、それが終了していますとき、jstreeを初期化:

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

このAjaxの呼び出しは非同期であるため、customMenu()関数は、"items"のオプション"contextmenu"に何も返されません。

+0

ありがとう、問題は単純でした – Webman

+0

ajaxは非同期または同期のどちらでもないですか? – Radek

関連する問題