javascript – Angularjs等到div background-image显示

我有以下ng重复,从$http.post调用获取数据,并将其存储到$scope.data中.
<div ng-repeat="key in [] | range:data.pages">
    <div class="pageBackground" id="page_{{ (key+1) }}" ng-style="{'background-image':'url(/images/{{data.id}}/{{(key+1)}}.png)'}">
    <!-- some random stuff here -->
</div>

正常情况下,.pageBackground类将在屏幕上显示背景图像之前加载.直到背景图像实际加载后,我才想要显示,但是我无法弄清楚.

有没有人有什么建议?

解决方法

我不知道有没有一个真正的解决方案为您的问题.解决方法可能是使用 Image对象,如 this answer所述.例如,作为一个指令:
angular.module("yourModule").directive("showOnceBackgroundLoaded",[function () {
  return {
    restrict: "A",scope: false,link: function (scope,element,attributes) {
      element.addClass("ng-hide");
      var image = new Image();
      image.onload = function () {
        // the image must have been cached by the browser,so it should load quickly
        scope.$apply(function () {
          element.css({ backgroundImage: 'url("' + attributes.showOnceBackgroundLoaded + '")' });
          element.removeClass("ng-hide");
        });
      };
      image.src = attributes.showOnceBackgroundLoaded;
    }
  };
}]);

使用:

<div ng-repeat="key in [] | range:data.pages">
    <div class="pageBackground" id="page_{{ (key+1) }}" show-once-background-loaded="/images/{{data.id}}/{{(key+1)}}.png">
    <!-- some random stuff here -->
</div>

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...