我想要无限滚动工作在angularjs没有运气。下面是我的html代码:angularjs无限滚动不起作用
<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>
下面是我的angularjs代码:
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);
}
});
};
});
我从一个例子中复制了大部分代码,我看不出为什么它不起作用。我通过提醒响应确保数据从我的http获取。所以数据回来了,但网页上没有显示任何内容。任何帮助表示赞赏。
我再次显示我的代码,看起来我的程序逻辑从未到达最后。
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();
}
'd.promise'的提示首先显示。然后显示“结束循环”的提示。 “loadMore结束”警报不会显示。有人可以显示我缺少什么代码来使这些数据显示在我的网页中吗?我正在收回数据。
看看http://stackoverflow.com/questions/13755120/infinite-scroll-from-the-top-reverse-in-angularjs?rq=1 –
我看过你提到过的问题,我做了一些改变,例如返回承诺,$超时等等,但即使数据回来,它仍然不会填充我的网页。另外,什么是loadMore.then函数()? – Dave
你应该使用ngInfiniteScroll,看看这个例子:http://4dev.tech/2015/08/tutorial-implementing-infinite-scroll-with-angularjs-and-nginfinitescroll/ –