使用angularjs承诺预加载背景图像

时间:2014-07-04 07:51:22

标签: css angularjs preload

如何使用angularjs promises预加载css background-image 我想做的是我可以这样使用的东西:

link: function(scope, element, attrs){
    element.hide();
    url = attrs.url;
    preload(url).then(function(loadedImageURL){
        element.css({
            background-image: "url('" + loadedImageURL + "')"
        });
    });
    element.fadeIn();
}

请注意,这不是this one的重复问题。

1 个答案:

答案 0 :(得分:7)

试试这个:

function preload(url) {
  var deffered = $q.defer(),
      image = new Image();

  image.src = url;

  if (image.complete) {

    deffered.resolve();

  } else {

    image.addEventListener('load', function() {
      deffered.resolve();
    });

    image.addEventListener('error', function() {
      deffered.reject();
    });
  }

  return deffered.promise;
}