引用其中一条有关ngCloak
指令(AngularJS documentation)的评论:
只有你的“index.html”页面才真正需要它,因为 浏览器可能会尝试在Angular有机会之前呈现内容 解析/编译它。在运行时,当Angular因内容而拉入内容时 ng-view,ng-include等,它将由Angular处理之前 浏览器呈现。
我在jsFiddle中创建了一个示例来验证这一点,令我惊讶的是,表达式在浏览器中呈现之前未进行评估。我希望首先编译模板&链接然后附加到DOM - 事实并非如此。
这是否意味着每个{{expression}}
内部模板也应该包含在ngCloak
中以防止闪烁或我遗漏了什么?
答案 0 :(得分:2)
我的猜测是警报允许浏览器在角度完成作业之前渲染,添加一个0延迟的setTimeout显示渲染模板:
http://jsfiddle.net/g/FLZZR/5/
function TemplateController ($scope) {
$scope.expression = "This should already be rendered...";
setTimeout(function(){
alert("... but it isn't.");
});
}
附加说明:您不能指望模板在您发出警报的位置呈现,充其量它将被隐藏,角度使用脏检查来实现其魔力,您必须让它“消化”您的更改为它们显示在DOM中。