使用AngularJS Promise预加载背景图片

3
我应该怎样使用 AngularJS 的 promises 预加载 CSS 背景图片? 我想要做的事情是这样的,我可以采用以下方式使用它:
link: function(scope, element, attrs){
    element.hide();
    url = attrs.url;
    preload(url).then(function(loadedImageURL){
        element.css({
            background-image: "url('" + loadedImageURL + "')"
        });
    });
    element.fadeIn();
}

请注意,这不是这个问题的重复
1个回答

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;
}

谢谢,它完美地工作了。这是一个演示 plunker:http://plnkr.co/edit/xRvFiQ4m8l2XrMTBzBUp?p=preview - Evan Lévesque
1
我会将它拆分成一个服务,查看此链接:http://plnkr.co/edit/mCsdts1AojaOpSbHFttW?p=preview - Ilan Frumer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接