Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html ng-app="MyApp">
<head>
<meta name="description" content="scrolling version 6" />
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body ng-controller="MainCtrl">
  
  <div id="data-container" when-scrolled="loadMore()">
    <img ng-if="!items.length" ng-src="http://placehold.it/100x395&text=Loading">
    <div class="item" ng-repeat="item in items">{{item.id}}</div>
    <img  ng-if="items.length && busy" ng-src="http://placehold.it/85x50&text=Loading">
  </div>
  
  Items count - {{items.length}}
  
</body>
</html>
 
var app = angular.module('MyApp', []);
app.directive('whenScrolled', function() {
    return function(scope, element, attr) {  
        var containerNode = element[0];
        element.bind('scroll', function() {
            if (containerNode.scrollTop + containerNode.offsetHeight >= containerNode.scrollHeight) {
                scope.$apply(attr.whenScrolled);
            }
        });
    };
});
app.controller('MainCtrl', function($scope, $timeout){
  
   $scope.items = [];
   $scope.busy = false;
    
   $scope.loadMore = function() {
        if (true === $scope.busy) {
          return;
        }
        $scope.busy = true;
        $timeout(function() {
          
            var currentLength = $scope.items.length;
            for (var i = currentLength; i < currentLength + 10; i++) {
                $scope.items.push({id: i + 1});
            }
            $scope.busy = false;
          
        }, 350); // Imitating the lomg remote request.
        
    };
    
    $timeout(function(){
      $scope.loadMore();
      // Delayed initial load to see the loading image
    }, 1500);
    
  
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
igormalykpro
0viewers