AngularJS - 你怎么知道角度处理完一个页面的时间?

时间:2013-11-14 15:39:53

标签: angularjs

如何知道给定页面上的所有插值和处理何时完成?

            compile: function (tElement, tAttrs) {
                return function (scope, element, attrs) {
                    element.html(tpl);
                    $compile(element.contents())(scope);
                };
            },

这不是同步的。如果有{{stuff}}和ng-repeat =“...”等......当链接函数返回时,它们将不能保证完成。

我需要一种方法来了解页面何时已渲染,并且没有更多指令要处理,以便我可以使用#hashes导航到通过angular在页面上创建的元素。 (使用$ anchorScroll)

2 个答案:

答案 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

enter image description here

这是另一种方法,但我更喜欢使用angular指令。

<li ng-repeat="opt in menuItems" my-custom-repeat-listener> </li>

然后在指令上有点像

if(scope.$last) { /*fire event or etc to show the list items*/ }