2014-07-04 51 views
2

我如何預加載CSS背景圖片的使用angularjs承諾 我想要做的東西,我可以這樣使用:預緊背景圖像承諾

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

回答

6

試試這個:

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

謝謝你,它可以完美運行。這裏是一個演示plunker http://plnkr.co/edit/xRvFiQ4m8l2XrMTBzBUp?p=preview –

+1

我會把它分解成一個服務,檢查這個:http://plnkr.co/edit/mCsdts1AojaOpSbHFttW?p=preview –