Javascript 在上更改$scope变量后执行传单API

Javascript 在上更改$scope变量后执行传单API,javascript,jquery,angularjs,leaflet,angular-leaflet-directive,Javascript,Jquery,Angularjs,Leaflet,Angular Leaflet Directive,我必须在元素显示后通过使用ng show更改$scope变量来绑定该元素上的js事件 在我改变了范围之后,我运行了JS脚本,但是JS比angular更快,所以他没有找到一些ng show还没有显示的div 下面是一个关于这个问题的代码示例。我找到的解决此类问题的方法是在setTimeout中执行JS代码,但我需要一个干净的解决方案: 使用$timeout服务: $scope.start = function(){ $scope.showMap=true; /* setTimeo

我必须在元素显示后通过使用ng show更改$scope变量来绑定该元素上的js事件

在我改变了范围之后,我运行了JS脚本,但是JS比angular更快,所以他没有找到一些ng show还没有显示的div

下面是一个关于这个问题的代码示例。我找到的解决此类问题的方法是在setTimeout中执行JS代码,但我需要一个干净的解决方案:


使用
$timeout
服务:

$scope.start = function(){
  $scope.showMap=true;
  /*   
  setTimeout(function(){  
    jsFunc();
  },1000);
  */
  //Use $timeout
  $timeout(jsFunc);
}
$timeout
服务与AngularJS摘要周期集成

由于传单API位于AngularJS框架之外,因此浏览器需要$timeout来呈现DOM并执行传单API代码


有关更多信息,请参见。

您需要在scope变量上添加一个watch:正如您在plunker中看到的,我只是按照您所说的那样对其进行了编辑,但没有解决问题,watch函数的调用比AngularJS在dom中所做的更改稍早一点。另一种替代方法是使用一个指令,例如。是的,我以前尝试过它,但它非常有限,特别是对于某些特定的需求。
$scope.start = function(){
  $scope.showMap=true;
  /*   
  setTimeout(function(){  
    jsFunc();
  },1000);
  */
  //Use $timeout
  $timeout(jsFunc);
}