Best way to preload images with Angular.js

前端 未结 9 888
野性不改
野性不改 2020-12-07 16:04

Angular\'s ng-src keeps previous model until it preloads image internally. I am using different image for the banner on each page, when I switch routes, i change main view,

9条回答
  •  旧巷少年郎
    2020-12-07 16:49

    I think this is perhaps the most elegant solution because the directive actually creates the spinner and removes it automatically:

    app.directive('spinnerLoad', [function spinnerLoad() {
        return {
            restrict: 'A',
            link: function spinnerLoadLink(scope, elem, attrs) {
                scope.$watch('ngSrc', function watchNgSrc() {
                    elem.hide();
                    elem.after('');  // add spinner
                });
                elem.on('load', function onLoad() {
                    elem.show();
                    elem.next('i.fa-spinner').remove(); // remove spinner
                });
            }
        };
    }]);
    

    Here is the html:

    
    

    Note: you'll need to be using font-awesome for this to work as described here

提交回复
热议问题