一尘不染

如何在angularJS中等到$ compile结束

angularjs

我正在加载模板,然后使用$compile服务针对我的范围对其进行编译。

var template = "<div> .. {{someCompilingStuff}} ..</div>";
var compiled = $compile(template)(cellScope);

然后在弹出窗口中使用它

cellElement.popover({
    html: true,
    placement: "bottom",
    trigger: "manual",
    content: compiled
});

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

在弹出窗口中使用angular之前,如何确保angular完成了模板的编译?

编辑$apply()在创建弹出窗口之前,我试图将角度强制为,它确实可以工作,但会生成JavaScript错误,这对我来说是不可接受的。


阅读 247

收藏
2020-07-04

共1个答案

一尘不染

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

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

参考有关$
compile使用的Angular文档

2020-07-04