我正在创建一个与谷歌地图集成的 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/