无法在点击处理程序

时间:2016-03-26 13:44:57

标签: angularjs vis.js

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

我已经在这里设置了一个示例代码集 - 正如您在内部点击一样,我无法更改$scope$rootScope

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

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

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

2 个答案:

答案 0 :(得分:1)

啊,问题解决了。我必须把它包裹在$scope.$apply中。我更新了codepen。

答案 1 :(得分:1)

你认为这很好,但考虑使用$timeout服务。当摘要周期正在进行时,$scope.$apply可能会失败。

所以注入$timeout并执行以下操作:

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

这仍然会与$scope.$apply做同样的事情,但是要安全。