如何在angularJS中等到$ compile结束

kyo*_*ori 19 javascript angularjs

我正在加载一个模板,然后使用$compile服务将其编译到我的作用域.

var template = "<div> .. {{someCompilingStuff}} ..</div>";
var compiled = $compile(template)(cellScope);
Run Code Online (Sandbox Code Playgroud)

然后在弹出窗口中使用它

cellElement.popover({
    html: true,
    placement: "bottom",
    trigger: "manual",
    content: compiled
});
Run Code Online (Sandbox Code Playgroud)

我的模板非常复杂,可能需要一些时间来编译.

在弹出框中使用之前,如何确保角度已完成编译模板?

编辑:我尝试$apply()在创建弹出窗口之前强制使用angular ,它确实有效但生成javascript错误,这对我来说是不可接受的.

小智 15

$compile允许您使用所谓的克隆附加功能,该功能允许您将元素附加到文档.以下是您可以使用的示例:

var template = "<div> .. {{someCompilingStuff}} ..</div>";
var compiled = $compile(template)(cellScope, function (clonedElement) {
  cellElement.popover({
    html: true,
    placement: "bottom",
    trigger: "manual",
    content: clonedElement
  });
});
Run Code Online (Sandbox Code Playgroud)

关于$ compile使用的Angular文档的引用

  • @JoeJohnson,不清楚你在说什么.`cloneAttach`(回调函数,就像你所说的那样)执行*previous*到链接函数返回链接的DOM元素.`$ compile`函数返回一个函数,右边 - 上面提到的链接函数.无论如何,我看不出这个答案是如何回答这个问题的,所以我对这个问题感到困惑 (5认同)