将带有templateUrl的指令编译为字符串并等待延迟链接函数

时间:2015-05-04 10:00:58

标签: javascript angularjs angularjs-directive angularjs-compile

我希望$compile一个包含几个指令到字符串的html并将其发送到服务器。由于某些指令包含templateUrl,因此返回的链接功能会延迟。在这个问题(AngularJS: Using $compile on html that contains directives with templateurl)中,问题似乎已经解决,调用$scope.$digest()这在我的案例中是不可能的(已经在进行中)。

我找到的唯一解决方案是使用超时,请参阅http://plnkr.co/edit/k3ZAYy1FhGUFXxXyrPvB?p=preview

有没有更好的方法等待延迟链接功能的完成?

1 个答案:

答案 0 :(得分:0)

在你的runURL函数中

,使用$ apply,如:

this.runUrl = function() {
    var scope = $rootScope.$new();
    var html = '<template-url-directive></template-url-directive>';
    var compiled = $compile(html);
    var el = compiled(scope);
    scope.$apply();
    this.result = el[0].outerHTML;
  };

用于将范围与模板绑定。请查看已修改的plunk.