以下のjQuery1.8.11.jsのコンテキストメニュープラグインを使用しており、「ビルド」コールバックを使用して、クリックするたびにメニューを動的に作成しています。
http://medialize.github.com/jQuery-contextMenu/index.html
アイテムがクリックされたときにメニューオプションを動的にロードできるようにしたい(アイテムのIDに応じて使用可能なオプションを決定するコントローラーメソッドを呼び出す)
私の問題は、このコンテキストメニューライブラリがajax呼び出しをサポートしていないようで、「build」コールバックでajax呼び出しを行おうとすると、明らかにajax呼び出しが完了するまで待機しないことです。
これが私がやろうとしていることの縮小されたスニペットです:
$.contextMenu({
selector: '" + contextMenuSelector + @"',
build: function ($trigger, e) {
menuOptionsArray = [];
//Ajax START
$.ajax({
type: "POST",
url: <myurl>,
//async: false, //**IF I UN-COMMENT THIS, IT WORKS**
context: $(this),
success: function (data) {
//BUILD THE OPTIONS ARRAY
menuOptionsArray...
}
});
//Ajax END
//This returns before the ajax call finishes
return {
items: menuOptionsArray
};
}
上記では、async = falseの設定は機能しますが、これは非推奨であるため、使用したくありません。
アイテムを非同期でロードする他の方法はありますか、またはこれにはプラグインの変更が必要ですか?