I am trying to get infinite scrolling working in angularjs with no luck. Below is my html code:
<div ng-app='herbivore' ng-controller='Scroller'>
<div id="fixed" when-scrolled="loadMore()">
<div ng-repeat='item in items'>
<tr><td style="text-align:center">{{item.id}}</td>
</div>
</div>
</div>
Below is my angularjs code:
function Scroller($scope, $http) {
$scope.items = [];
var url = "/admin/getusers?type=" + "today";
$scope.loadMore = function() {
$http({
'url': url,
'method': 'GET'
})
.success(function (data) {
var items = data.response;
for (var i = 0; i < items.length; i++) {
if(i < 5)
alert("item=" + items[i].id);
$scope.items.push({id: i});
}
});
};
$scope.loadMore();
}
angular.module('scroll', []).directive('whenScrolled', function() {
return function(scope, elm, attr) {
var raw = elm[0];
elm.bind('scroll', function() {
if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
scope.$apply(attr.whenScrolled);
}
});
};
});
I copied most of this code from an example and I can't see why it isn't working. I made sure data was coming back from my http get by alerting the response. So data is coming back but nothing is being displayed on the web page. Any help is appreciated.
I am showing my code again and it seems my program logic never reaches the end.
function Scroller($scope, $http, $q, $timeout) {
$scope.items = [];
$scope.loadMore = function() {
var url = "/admin/getusers?type=" + "today";
var d = $q.defer();
$http({
'url': url,
'method': 'GET'
})
.success(function (data) {
var items = data.response;
for (var i = 0; i < items.length; i++) {
$scope.items.push({username: items[i].username});
}
d.resolve($scope.items);
alert("end loop");
}
);
alert("d.promise");
return d.promise;
};
alert("end of loadMore");
$scope.loadMore();
}
The alert for 'd.promise' displays first. Then the alert for 'end loop' displays next. the alert for 'end of loadMore' never displays. Can someone show what code I am missing to make this data show up in my web page? I am getting data back.