我必须通过使用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);
}
答案 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。