使用Socket IO进行Jstree延迟加载

时间:2016-03-29 06:31:55

标签: javascript socket.io

我已经看到使用jquery ajax的请求响应进行延迟加载但是我是否有任何方法可以使用Socket IO懒惰地加载节点数据?例如,我想要这样的东西

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

每次点击我都可以调用数据回调来设置节点。有什么想法吗?谢谢你的期待。

2 个答案:

答案 0 :(得分:1)

我不了解Socket 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)
       }    

}

注意:&#34;这&#34;是树实例。

答案 1 :(得分: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一直连接的方法,我在这里没有显示。