Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular-images-loaded-jtt

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-images-loaded-jtt

Image load detector

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

angular-images-loaded

####Image load detector with progress events

  • Directive can be nested now (NEW)
  • Detects images load for all images inside an element and broadcasts angular progress events
  • Works with ng-repeat.
  • Can be used on different elements
  • Need not worry about asynchronous image elements insertion into DOM

#####REQUIREMENTS

  • Angularjs 1.2+ only

#####INSTALLATION

  • Download angular-images-loaded-directive.min.js and include it with your JS files.
  • Include module jtt_imagesLoaded in your main app module.

#####USAGE

  • Put directive data-images-loaded on an element containing images.

    Eg.

    <div data-images-loaded>
    <div data-ng-repeat="image in images">
    		<img ng-src="http://lorempixel.com/{{image.src}}">
    	  <div>Foo Bar</div>
    </div>
    </div>
    
  • You can nest the directive

    Eg.

    <div data-images-loaded>
    ..................
    
    <div data-images-loaded>
    	<div data-ng-repeat="image in images1">
    			<img ng-src="http://lorempixel.com/{{image.src}}">
    		  <div>Foo Bar</div>
    	</div>
    </div>
    
    <div data-images-loaded>
    	<div data-ng-repeat="image in images2">
    			<img ng-src="http://lorempixel.com/{{image.src}}">
    		  <div>Foo Bar</div>
    	</div>
    </div>
    </div>
    

    That's it!

#####EVENTS(Always available)

  • imagesLoaded.SUCCESS - All images have been successfully loaded

  • imagesLoaded.FAIL - All images have been loaded with atleast 1 failed image

  • imagesLoaded.ALWAYS - All images are done, whether successfully loaded or failed to load. This event is always broadcasted

    Subscribe to these events in your controller as shown below

    $scope.$on('imagesLoaded.SUCCESS', function() {
      console.log('ALL LOADED');
    });
    
    $scope.$on('imagesLoaded.FAIL', function() {
      console.log('ALL LOADED WITH ATLEAST ONE FAILED');
    });
    
     $scope.$on('imagesLoaded.ALWAYS', function() {
      console.log('ALL DONE ALWAYS');        
    });
    

#####PROGRESS EVENTS

  • imagesLoaded.QUARTER - One fourth of total images have been loaded/failed

  • imagesLoaded.HALF - Half of total images have been loaded/failed

  • imagesLoaded.THREEQUARTERS - Three fourth of total images have been loaded/failed

  • imagesLoaded.FULL - All images have been loaded/failed

    Main event is imagesLoaded.PROGRESS, other events are received in the callback via progress.status

    Subscribe to these progress events in your controller as shown below

    $scope.$on('imagesLoaded.PROGRESS', function($event, progress) {
      console.log(progress);
      switch(progress.status) {
          case 'imagesLoaded.QUARTER':
              $scope.progress = 25;
              break;
          case 'imagesLoaded.HALF':
              $scope.progress = 50;
              break;
          case 'imagesLoaded.THREEQUARTERS':
              $scope.progress = 75;
              break;
          case 'imagesLoaded.FULL':
              $scope.progress = 100;
              break;
      }
    });
    

#####Note :-

  1. To listen to progress events, use attribute data-use-progress-events as shown below -
<div data-images-loaded data-use-progress-events="yes">
	<div data-ng-repeat="image in images">
			<img ng-src="http://lorempixel.com/{{image.src}}"/>
		  <div>Foo Bar</div>
	</div>
</div>
  • data-use-progress-events="yes" to listen to progress events

  • data-use-progress-events="no" to skip progress events and just listen to main events

    This approach is taken to minimise $digest cycles in case you wish to skip progress events, since all angular-specific changes take place in the $digest cycle. That's why, I have kept progress events to a minimum, otherwise N images load will cause N $digest cycles to notify the subscriber, which can hamper performance.

  1. Use $event.stopPropagation() in your controller when using progress events and nesting the directive, otherwise you'll receive same notification multiple times.
 $scope.$on('imagesLoaded.PROGRESS', function($event, progress) {
   console.log(progress);
   $event.stopPropagation();
   
   switch(progress.status) {
       case 'imagesLoaded.QUARTER':
           $scope.progress = 25;
           break;
       case 'imagesLoaded.HALF':
           $scope.progress = 50;
           break;
       case 'imagesLoaded.THREEQUARTERS':
           $scope.progress = 75;
           break;
       case 'imagesLoaded.FULL':
           $scope.progress = 100;
           break;
   }
 });

Keywords

FAQs

Package last updated on 11 Jan 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc