无法在单击处理程序上修改 graph2d 内的 $scope

Cannot modify $scope inside graph2d on click handler

是否有人将 visjs 与 Angular 一起使用?我正在使用它,但我正在努力弄清楚如何访问和修改范围变量。具体来说,在 visjs 的处理程序(例如单击)中,我似乎根本无法更改范围变量。有趣的是,我什至尝试了 rootScope,但它也不起作用?我从来没有遇到过这种情况。

我在这里设置了一个示例 codepen - 正如您在点击中看到的那样,我无法更改 $scope$rootScope

http://codepen.io/pliablepixels/pen/WwOpmd

点击处理程序的代码片段:

graph2d.on('click',function (prop) {
     alert ("You clicked");
     $scope.myname = "terminator";
     $rootScope.rootmyname="footer";
   });

啊,问题解决了。我不得不将它包装在 $scope.$apply 中。我更新了代码笔。

很高兴您明白了,但请考虑改用 $timeout 服务。 $scope.$apply 当摘要循环已经在进行时可能会失败。

所以注入 $timeout 并像这样:

$timeout(function() {
    $scope.myname = "terminator";
    $rootScope.rootmyname="footer";
});

这仍然会以安全的方式执行与 $scope.$apply 相同的操作。