javascript - 预编译用于 Google map 标记的指令会导致 '$apply already in progress' 错误

标签 javascript angularjs google-maps

我正在创建一个与谷歌地图集成的 AngularJS 应用程序。我有一些 html 用作信息弹出窗口。我在应用程序的其他地方使用了类似的 html block ,因此我开始使用指令来创建可重用的组件。

一旦我实现了这一点,我意识到信息弹出窗口需要在创建时使用其 html 进行初始化,而不是在“弹出”时进行初始化。

我研究了如何预编译指令。它与测试指令的 AngularJS 文档非常相似。

var element = angular.element("<my-directive data=data></my-directive>");
var scope = $rootScope.$new();
scope.data = someData;
element = $compile(element)(scope);
scope.$apply();

element.html(); // Gives me the html 

这会导致错误'$apply已经在进行中'我知道这意味着摘要循环已经在进行中,但是这个$apply是必要的,因为我需要创建这个预编译模板来传递到我的信息弹出窗口。

我已经研究了 $interpolate 和 $parse,但我认为我不能使用它们,因为我的指令具有需要评估的链接函数。

最佳答案

使用

if (!$scope.$$phase)
 $scope.$apply();

关于javascript - 预编译用于 Google map 标记的指令会导致 '$apply already in progress' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187495/

相关文章:

javascript - 实现点赞功能时出现问题。函数只运行一次

javascript - 在 Chrome DevTools 和扩展中的内容脚本之间进行通信

javascript - Google map v3 标记不刷新

javascript - 将 javascript 数组从 0 切片到 Arrays.length 的目的是什么?

javascript - 谷歌地图 - 获取拖动标记的坐标

ios - 形状,多边形,不会 swift 显示在 GoogleMaps 上

javascript - 无法将数据发送到 API 服务器 'Error trying to diff ' [对象对象 ]'. Only arrays and iterables are allowed'

javascript - 如何为 Ng Repeat 指令访问的 View 中的每个项目创建“查看更多”切换

javascript - Angular JS Slick Carousel - 似乎不起作用

python - 计算邮政编码/邮政编码 python 之间的(公路旅行)距离