无法在单击处理程序上修改 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
相同的操作。
是否有人将 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
相同的操作。