【发布时间】:2015-07-23 13:39:49
【问题描述】:
我正在加载一个模板,然后使用$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 错误。
【问题讨论】:
-
但是
$compile服务返回link函数,你希望你是怎样的html? -
一种方法是使用 $applyAsync 或 $evalAsync 或 $$postDigest
-
这是什么
.popover?这是一个引导组件吗?如果是这样,它不期望一个字符串或一个函数,而你正在传递一个元素 (compiled) -
这是引导弹出框,是的。并且编译函数似乎返回一个 DOM 对象,女巫被 popover.content 接受。我的代码正在运行,但弹出框是使用未编译的内容创建的,然后内容编译并按预期替换弹出框内的文本,但由于弹出框内容的长度发生了变化,我有视觉错误。这就是为什么我想用编译后的内容而不是模板来创建弹出框
-
@kyori,您能提供示例plunker 与您的代码吗?
标签: javascript angularjs