如何在angularjs中添加visjs事件?

时间:2015-06-24 12:12:04

标签: angularjs angularjs-directive vis.js

visjs doc中,我需要在angularjs项目中启用stabilizationProgress事件。我为此创建了plunker demo

我尝试了类似下面的内容,但不确定如何使用angularjs添加进度条。这是link to give an idea

<vis-network data="data" options="options" events="events"></vis-network>

控制器代码

$scope.events = [{
    stabilizationProgress: function (obj) {

    },
    stabilizationIterationsDone: function () {

    }
}];

2 个答案:

答案 0 :(得分:3)

启用directive,以便在angularvis之间传输数据。 vis可以模仿angular的每个特征,将vis$digest周期相结合。

指令是处理DOM manipulation并与vis等第三方插件集成。

例如,如果您希望在vis讲述某些内容时更新某些内容,则可以实现如下(假设vis.event()是来自vis API的真实方法):< / p>

/* On directive's link() function */

vis.event('bla-bla-bla', function (arg1, arg2, arg3) {
    scope.$evalAsync(function () {
        scope.emit('vis:bla-bla-bla', arg1, arg2, arg3);
    });
});

在您的控制器上,您可以收听此事件:

// On a parent controller where the directive is placed
//
// The $scope below can be $scope too,
// but it will traverse all child scopes first
$scope.$on('vis:bla-bla-bla', function ($event, arg1, arg2, arg3) {
    $event.stopPropagation(); // Useful, to avoid performance leak

    console.log($event, arg1, arg2, arg3);
});

编辑1:

我读过你指出的一些Plunkr:

http://plnkr.co/edit/XlRkfazfYBmj0GM1PTeC?p=info

事件系统已经存在,您错过了vis-network元素上的属性,events元素,并且希望绑定到它的事件。

我建议你注释掉其中的一些内容并每次取消注释以使其正常工作。目前,它们都处于活动状态并登录控制台!

答案 1 :(得分:0)

在控制器中定义一个回调方法,该方法应在事件被触发时执行,例如:

function actOnEvent($event){
     window.alert($event. ...);
};

$ event是填充的事件,包含您需要的所有信息。 然后仍然在您的控制器中,您需要将事件映射到您的功能,例如:

var vm = this;
vm.events = { click: actOnEvent};

并在您的html模板中,例如。

<vis-network data="vm.data" options="vm.options" events="vm.events"></vis-network>