2017-03-01 10 views
0

jsTreeを使用して、カスタマーサポートサービスのナレッジベースを構築しています。そのためには、各ノードのコンテンツを自分のウェブサイト上の現在アクティブなユーザーに送信できるようにする必要があります。jstree - ajax経由でコンテキストメニューを読み込み

これは、ノードのコンテキストメニューを呼び出すたびに、現在アクティブなユーザーをajax経由で取得してメニュー項目として表示する必要があることを意味します。

今、私はcontextmenuがノードの関数であることを知っています。しかし、それをajax関数の結果にバインドする方法はありますか?線に沿って

何か:

"contextmenu": { 
    "select_node": false, 
    "show_at_node": false, 
    "items": function(node) { 
     $.ajax({ 
      url: 'some_url_with_actions_for_node', 
      success: function (action_list) { 
       return action_list; 
      } 
     }) 
    } 
} 

明らかに上記の例では動作しませんが、あなたのアイデアを得ます。

ドキュメントはメニューが

ノードとコールバック関数を受け取り、(あなたも返すことができ、そのノード ために利用可能なアクションの対象と コールバック関数を呼び出す関数とすることができると言いますアイテムもあります)

多分、私が必要とするコールバックを絞る方法がありますか?私はこれを理解するにはJSにはあまりにも悪いです。

答えて

1

非同期アクションを実行するため、ネイティブjsTreeコンテキストメニュー機能で作成できるかどうかはわかりません。より良いソリューションがなければ、以下のように手動でメニューを構築するだけです。デモをチェック - Fiddle Demo

... 
'contextmenu': { 
    'items': function(node) { 

     // remove default context menu items 
     var tmp = $.jstree.defaults.contextmenu.items(); 
     delete tmp.rename; 
     delete tmp.remove; 
     delete tmp.ccp; 
     delete tmp.create; 

     tmp = { 
      loading: { 
       label: "Wait ..." 
      } 
     } 

     // start ajax 
     _loadMenuItems(); 

     return tmp; 
    } 
} 



function _loadMenuItems() { 

    // make ajax call 

    // in your success function, where serverData is the data you got: 
    $('.vakata-context').html(''); 

    serverData.forEach(function(item) { 
     var menuItem = $('<li><a href="#">' + item.label + '</a></li>'); 
     menuItem.click(item.action); 
     $('.vakata-context').append(menuItem); 
    }); 

} 
-2

を私は正確に同じ問題を持っていた、あなたはソリューションhereを見つけることができます。あなただけ行う必要があり

:このリンクは質問に答えるかもしれないが

contextmenu: { 
    items: function (node, buildContextMenu) { 
     var entries= {}; 

     $.ajax({ 
      url: "...", 
      data: node.id, 
      success: function() { 
       // Construct the entries 
       ... 

       buildContextMenu(entries); // <--- SOLUTION 
      } 
     }); 
    } 
} 
+0

、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供することをお勧めします。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 16993956) –

+0

これは私の回答が投票した理由です。私は新しいので、まだドキュメントを読んでいない。 – vnea

関連する問題