如何知道给定页面上的所有插值和处理何时完成?
compile: function (tElement, tAttrs) {
return function (scope, element, attrs) {
element.html(tpl);
$compile(element.contents())(scope);
};
},
这不是同步的。如果有{{stuff}}和ng-repeat =“...”等......当链接函数返回时,它们将不能保证完成。
我需要一种方法来了解页面何时已渲染,并且没有更多指令要处理,以便我可以使用#hashes导航到通过angular在页面上创建的元素。 (使用$ anchorScroll)
答案 0 :(得分:1)
也许试试这个:
$scope.$on('$viewContentLoaded', function() {
// ....
});
答案 1 :(得分:0)
由于这个非常具体的原因,有一个角度指示; ngCloak。
ngCloak指令用于阻止Angular html模板 来自浏览器的原始(未编译)短暂显示 在您的应用程序加载时表单。使用此指令可以避免 由html模板显示引起的不良闪烁效应。
Doc @ https://docs.angularjs.org/api/ng/directive/ngCloak
关于Quora的类似问题; 在ng-repeat处理完毕之前,如何使用AngularJS隐藏div? @ https://www.quora.com/How-do-I-hide-a-div-with-AngularJS-until-ng-repeat-has-finished-processing
这是另一种方法,但我更喜欢使用angular指令。
<li ng-repeat="opt in menuItems" my-custom-repeat-listener> </li>
然后在指令上有点像
if(scope.$last) { /*fire event or etc to show the list items*/ }