将$ scope放在Cytoscape点击事件中

时间:2016-07-30 12:00:51

标签: javascript angularjs cytoscape.js

我使用Cytoscapejs创建了一个网络图。我试图取消隐藏div,并在用户点击图形边缘后加载更多内容。

我的控制器中有以下内容:

CytoscapeService.getGraph().on('tap', 'edge[id = "123"]', function (event) {

console.log("Hi")
//Above console printout works.

  //The below does not work on index.html
  $scope.testMessage = "Hello World";
  $scope.showMe = function () {
    $scope.show = true;
  }

  $scope.showMe();

});

// This works though.
//$scope.testMessage = "Hi from outside";

在Index.html中:

<div  ng-controller="MainCtrl" class="container" ng-show="show">

</div>

<div  ng-controller="MainCtrl">
  {{testMessage}}
</div>

console.log确实打印出来但是没有调用带有函数的$ scope.showMe。但是,如果我将范围移到此子句之外,进入Controller的主要子句,它就可以工作。

我有什么办法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

当您使用jquery事件更新$ scope值时,这在angular中很常见。您将不得不手动触发$ scope适用:

$scope.$apply(function(){
    $scope.show = true;
});

另一种解决方案是使用Angular&#39; $timeout

$timeout(function () {
    $scope.show = true;
});

请参阅$scope.apply()more scope information的文档。