网络完成加载时的Vis.js回调

时间:2017-03-31 08:16:17

标签: javascript node.js promise vis.js

我使用vis.js网络接收一些数据,并将所述数据添加为网络中的节点。

唯一的问题是在声明网络后(使用指定的节点和边缘,可能很多),网络中的节点需要一段时间才能渲染。

即使我宣布网络如此:

var network = new vis.Network(container, data, options);

然后通过使容器可见来跟进:

$('#BreakdownBox').css('display','inline');

在节点完成缓冲之前它仍然可见,在它们被渲染之前显示一个空白画布。

我的问题:我怎样才能在加载完节点后才能看到它? 有没有办法使用promises.js?类似的东西:

var network = new vis.Network(container, data, options).done(function{
    $('#BreakdownBox').css('display','inline');
});

3 个答案:

答案 0 :(得分:0)

最后,我使用原生加载栏来访问vis.js,使用他们的示例代码here

这有点不对,但这就是我所需要的。

答案 1 :(得分:0)

您可以参考示例visjs loading bar

您需要监听“ stabilizationIterationsDone”事件以隐藏进度栏

network.once("stabilizationIterationsDone", function() {
   $('#BreakdownBox').css('display','none');

}); 

答案 2 :(得分:0)

试试这个。您的代码将被执行一次,该功能将被删除。由于您的代码绑定到 'afterDrawing' 事件而不是 'stabilizationIterationsDone' 事件,即使您禁用了物理,它也会执行。

const functionThatDoesWhatYouNeed = () ={ 
    // Your code
    network.off('afterDrawing', functionThatDoesWhatYouNeed)
}
network.on('afterDrawing', functionThatDoesWhatYouNeed)

它将函数绑定到 'afterDrawing' 事件并移除自身,以便它不会执行多次。