在 visjs 完成加载图表后获取回调

Getting a Callback after visjs finishes loading chart

我想在完成加载图表后从 visjs 获得回调,以便我可以取消隐藏图表并停止加载动画。但是,无论如何我都看不到要在文档中注册回调。

现在,我是 javascript 的新手,所以我可能没有正确考虑这个问题?希望有人能指出我正确的方向。谢谢!

我是 vis.js 的创作者之一。

vis.js 的可视化应该 同步加载,因此不需要回调。在检查了 Timeline 和 Graph2d 之后,我发现情况不再如此,这不是故意的行为。我在这里为此开了一个问题:https://github.com/almende/vis/issues/1541

我不知道您使用的是哪种可视化效果,但 Timeline 和 Graph2d 的解决方法是:同步加载可视化效果,并在下一个时间点加载项目。所以你可以在 0 毫秒后设置超时回调:

var timeline = new vis.Timeline(...);

alert('The Timeline is visible but the items not yet (this is a bug)')

setTimeout(function () {
  alert('Now everything is loaded!');
}, 0);

我在第一场演出时解决了更改事件的问题。

 var firstshow=true;
 $scope.timeline.on("changed", function (properties) {
                if(firstshow)
                {
                    $scope.timeline.focus($scope.timeline.getVisibleItems());
                    firstshow=false;
                }

对我有用的解决方案是:

timeline.on('finishedRedraw', function() {

    console.log('do something');

});

看来这个问题还没有解决。您还可以连接到 currentTimeTick 时间轴事件。请注意,此事件会不断触发,因此您可以在第一次触发后取消订阅。

this.timeline.on("currentTimeTick", (prop) => {
        // Do something here
        // After fired the first time we un-subscribed
        this.timeline.off("currentTimeTick")
    })