Angular won't provide you anything for this, you just need to bind the scroll event to the element. In my current project, I just created an event in the controller:
var container = angular.element(document); container.on('scroll', function() { if (container.scrollTop() > 1000) { $('#scroll-top-button').addClass('show'); } else { $('#scroll-top-button').removeClass('show'); } });
It works very well (I would expect that if in the scroll event some resource would cost, but not really).
Angular directive
An easy way is to define a directive to bind the scroll event and view the position. Based on your code:
angular.module('ionicApp', ['ionic']) .directive("scrollable", function() { return function(scope, element, attrs) { var container = angular.element(element); container.bind("scroll", function(evt) { if (container[0].scrollTop <= 0) { alert('On the top of the world I\'m singing I\'m dancing.'); } if (container[0].offsetHeight + container[0].scrollTop >= container[0].scrollHeight) { alert('On the bottom of the world I\'m waiting.'); } }); }; }) .controller('MyController', function($scope, $element) { $scope.name = [{ ... }]; });
Then in your HTML just add the directive
<div scrollable style="width:90%;height:1...
I updated the version on your plunker (v5) , which works for me and seems pretty strong for global compatibility. Low level;)
Alternative library
If you want to implement some deeper function, you can use a library like waypoint
Waypoints is a library that simplifies the execution of a function whenever you go to an element. http://imakewebthings.com/waypoints/
It works great, very lightweight, and since v3.0 is jQuery free: D. I know that some hardcore designer interface uses it without any performance issues.