2016-03-29 6 views
0

jquery ajaxのリクエストレスポンスを使用して遅延ロードを見たことがありますが、Socket IOを使用してノードデータを遅延ロードすることはできません。たとえば、私はこのソケットI/Oを使用したJstreeの遅延ロード

$("#tree").jstree({ 
     "core": { 
      "data": function(data){ 
      socket.on("node",function(node){ 
       data = node; 
      }) 
      } 
     } 
    }); 

ような何かをしたいと、それぞれに私がノードを設定するには、データのコールバックを呼び出すことができますクリックしてください。それについての考えは?期待してくれてありがとう。

+0

WebSocketを意味しますか? –

+0

申し訳ありません私は[ソケットIO](http://socket.io/)を使用しています – essaji

+0

あなたのアプローチはちょうど良いと思います。また、 'var socket = io(" http:// xxxxx ")'があるはずです。 –

答えて

1

私は、ソケットIOのことは知らないが、私はあなたが正しいjstreeでそれをやっていないと確信している:

function(currentNode, callback){ 
     //we got it called twice, prolly because of angular 
     if(currentNode.id=='#'){ 
      var me = this; 
      // perform a request with your framework here and call this once you have your data, '#' mean we're loading the root nodes 
      var nodes = <your data> 
      callback.call(me, nodes); 
     }else{ 
      var me = this; 
      // we're loading child nodes 
      // same as before ask the nodes to the server then call the callback with the data loaded. 
      var nodes = <your data> 
      callback.call(me, nodes) 
     }  

}

注:ここにあなたの関数がどのように見えるかです: 「this」はツリーインスタンスです。

+0

これは私が探していたものです。ありがとう – essaji

0

これは役に立ちますか?

var ws = new WebSocket("ws://xxxx.xx/xxx/"); 
ws.onopen = function() { 
    ws.onmessage = function (evt) { 
     $("#codeeditor").jstree({ 
      "core": { 
       "data": { 
        "data": function(data){ 
         data = evt.data; 
        } 
       } 
      } 
     }); 
    }; 
}; 

また、私がここに示していないWebSocketをすべて接続しておくためのアプローチが必要です。

+0

私は[ソケットIO](http://socket.io/)を使用しています – essaji

+0

@essaji申し訳ありません。私は一見するつもりです。 –

関連する問題