Angular JS:检测页面内容已完全渲染并可见

我的情况

我有一大堆人都有自己的个人资料图片和信息。 所有项目都有一些CSS3样式/动画。

我在用着:

<li ng-repeat="person in people">

人们是来自外部JSON文件的超过150个对象的数组,它们都必须显示在同一页面上。

页面加载/渲染缓慢,并不是因为获取带有人的JSON数据的$ http GET函数(仅需要大约100ms),而是页面的渲染和所有应用于每个css3样式的渲染项目(如果我把我的CSS变得更快)。

我的主要问题

我可以忍受页面渲染缓慢,但我真正想要的是检测每当我沉重的页面加载其内容,以启动和停止加载指标 。 我试着做出这样的指令:

directive("peopleList", function () {
    return function (scope, element, attrs) {
        scope.$watch("people", function (value) {
            var val = value || null;
            console.log("Loading started");
            if (val){
                console.log("Loading finished");
            }
        });
    };
});

并把这个指令放在加载我的人员列表的包装div上。 但是当我的JSON数据对象被填充时,加载似乎停止,这只需要100ms左右,但是页面的实际可视化渲染更像4-5s。

我也试过像http://jsfiddle.net/zdam/dBR2r/这样的解决方案,但我在那里得到了相同的结果。

我需要的

当我浏览我的页面时(它们都具有相同类型的列表)时,我需要一些告诉我什么时候页面已完全加载并且对用户可见,以便知道何时隐藏我的加载指示符。


尝试添加此指令 - 魔术在链接功能中:

directives
  .directive('onFinishRender', function ($timeout) {
  return {
    restrict: 'A',
    link: function (scope, element, attr) {
      if (scope.$last === true) {
          scope.$evalAsync(attr.onFinishRender);
      }
    }
  }
});

添加一个加载器作为第一项:

<li ng-show="!isDoneLoading">
  <div class="loading">Loading...</div>
</li>

然后在你的李,添加这个:

  <li ng-repeat="..." on-finish-render="isDoneLoading = true;"> ... </li>
链接地址: http://www.djcxy.com/p/74481.html

上一篇: Angular JS: Detect when page content has rendered fully and is visible

下一篇: Git RPC Failed; result=22, HTTP code = 400