$ scope变量在angular上更改后执行Leaflet API

时间:2016-12-28 10:55:40

标签: javascript jquery angularjs leaflet angular-leaflet-directive

我必须通过使用ng-show更改$ scope变量来显示元素上的js事件。

在我更改范围后,我运行了JS脚本,但是Js比他想念的角度更快,发现某些div还没有被ng-show显示。

这是针对此问题的一些代码示例的plunker。我发现这种问题的解决方案是在setTimeout中执行JS代码,但我需要一个干净的解决方案:https://plnkr.co/edit/iYDs552yCyd3R7ivgD84?p=preview

$scope.start = function(){
  $scope.showMap=true;

  setTimeout(function(){  
    jsFunc();
  },1000);
}

1 个答案:

答案 0 :(得分:1)

使用$timeout服务:

$scope.start = function(){
  $scope.showMap=true;
  /*   
  setTimeout(function(){  
    jsFunc();
  },1000);
  */
  //Use $timeout
  $timeout(jsFunc);
}

$timeout服务与AngularJS摘要周期集成在一起。

由于Leaflet API是AngularJS框架的外部,因此浏览器需要$ timeout来呈现DOM并执行Leaflet API代码。

有关详细信息,请参阅AngularJS $timeout Service API Reference