微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

原文地址:https://www.jb51.cc/js/152232.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐