function prelink($scope, $element, $attr) {
        $ionicBind($scope, $attr, {
          direction: '@',
          paging: '@',
          $onScroll: '&onScroll',
          $onScrollComplete: '&onScrollComplete',
          scroll: '@',
          scrollbarX: '@',
          scrollbarY: '@',
          zooming: '@',
          minZoom: '@',
          maxZoom: '@'
        });
        $scope.direction = $scope.direction || 'y';

        if (isDefined($attr.padding)) {
          $scope.$watch($attr.padding, function(newVal) {
            innerElement.toggleClass('padding', !!newVal);
          });
        }
        if ($scope.$eval($scope.paging) === true) {
          innerElement.addClass('scroll-paging');
        }

        if (!$scope.direction) { $scope.direction = 'y'; }
        var isPaging = $scope.$eval($scope.paging) === true;

        if (nativeScrolling) {
          $element.addClass('overflow-scroll');
        }

        $element.addClass('scroll-' + $scope.direction);

        var scrollViewOptions = {
          el: $element[0],
          delegateHandle: $attr.delegateHandle,
          locking: ($attr.locking || 'true') === 'true',
          bouncing: $scope.$eval($attr.hasBouncing),
          paging: isPaging,
          scrollbarX: $scope.$eval($scope.scrollbarX) !== false,
          scrollbarY: $scope.$eval($scope.scrollbarY) !== false,
          scrollingX: $scope.direction.indexOf('x') >= 0,
          scrollingY: $scope.direction.indexOf('y') >= 0,
          zooming: $scope.$eval($scope.zooming) === true,
          maxZoom: $scope.$eval($scope.maxZoom) || 3,
          minZoom: $scope.$eval($scope.minZoom) || 0.5,
          preventDefault: true,
          nativeScrolling: nativeScrolling,
          scrollingComplete: onScrollComplete
        };

        if (isPaging) {
          scrollViewOptions.speedMultiplier = 0.8;
          scrollViewOptions.bouncing = false;
        }

        var scrollCtrl = $controller('$ionicScroll', {
          $scope: $scope,
          scrollViewOptions: scrollViewOptions
        });

        function onScrollComplete() {
          $scope.$onScrollComplete && $scope.$onScrollComplete({
            scrollTop: scrollCtrl.scrollView.__scrollTop,
            scrollLeft: scrollCtrl.scrollView.__scrollLeft
          });
        }
      }
@ngdoc directive
@name ionScroll
@module ionic
@delegate ionic.service:$ionicScrollDelegate
@codepen mwFuh
@restrict E

@description
Creates a scrollable container for all content inside.

@usage

Basic usage:

```html
<ion-scroll zooming="true" direction="xy" style="width: 500px; height: 500px">
  <div style="width: 5000px; height: 5000px; background: url('https://upload.wikimedia.org/wikipedia/commons/a/ad/Europe_geological_map-en.jpg') repeat"></div>
 </ion-scroll>
```

Note that it's important to set the height of the scroll box as well as the height of the inner
content to enable scrolling. This makes it possible to have full control over scrollable areas.

If you'd just like to have a center content scrolling area, use {@link ionic.directive:ionContent} instead.

@param {string=} delegate-handle The handle used to identify this scrollView
with {@link ionic.service:$ionicScrollDelegate}.
@param {string=} direction Which way to scroll. 'x' or 'y' or 'xy'. Default 'y'.
@param {boolean=} locking Whether to lock scrolling in one direction at a time. Useful to set to false when zoomed in or scrolling in two directions. Default true.
@param {boolean=} paging Whether to scroll with paging.
@param {expression=} on-refresh Called on pull-to-refresh, triggered by an {@link ionic.directive:ionRefresher}.
@param {expression=} on-scroll Called whenever the user scrolls.
@param {expression=} on-scroll-complete Called whenever the scrolling paging is completed.
@param {boolean=} scrollbar-x Whether to show the horizontal scrollbar. Default true.
@param {boolean=} scrollbar-y Whether to show the vertical scrollbar. Default true.
@param {boolean=} zooming Whether to support pinch-to-zoom
@param {integer=} min-zoom The smallest zoom amount allowed (default is 0.5)
@param {integer=} max-zoom The largest zoom amount allowed (default is 3)
@param {boolean=} has-bouncing Whether to allow scrolling to bounce past the edges
of the content.  Defaults to true on iOS, false on Android.