我使用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');
});
答案 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' 事件并移除自身,以便它不会执行多次。