gpt4 book ai didi

AngularJS - 一个简单的无限滚动

转载 作者:行者123 更新时间:2023-12-04 22:31:07 25 4
gpt4 key购买 nike

我正在尝试写一个类似的小无限卷轴到这里找到的那​​个:http://jsfiddle.net/vojtajina/U7Bz9/

我已经能够显示前 5 条数据,但是在滚动时,没有显示其他项目。

HTML:

<div id="fixed" directive-when-scrolled="loadMore()">
<ul>
<li ng-repeat="i in items | limitTo: 5">{{ i.Title }}</li>
</ul>
</div>

JS:
var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
$scope.name = 'World';

$scope.items = [
{
"Title":"Home"
},
{
"Title":"Contact"
},
{
"Title":"Help"
},
{
"Title":"About"
},
{
"Title":"Our Offices"
},
{
"Title":"Our Locations"
},
{
"Title":"Meet the Team"
}
,
{
"Title":"Our Mission"
},
{
"Title":"Join Us"
},
{
"Title":"Conferences"
},
{
"Title":"Tables"
},
{
"Title":"Chairs"
}
];

var counter = 0;
$scope.loadMore = function() {
for (var i = 0; i < 5; i++) {
$scope.items.push({id: counter});
counter += 10;
}
};

$scope.loadMore();


});


app.directive("directiveWhenScrolled", function () {
return function(scope, elm, attr) {
var raw = elm[0];

elm.bind('app', function() {
if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
scope.$apply(attr.whenScrolled);
}
});
};
});

这是一个plunker: http://plnkr.co/edit/6ggYGZx6scSoJ5PNhj67?p=preview

最佳答案

有两个问题。首先,什么是 attr.whenScrolled ?它的未定义。第二个 - limitTo: 5 。您将始终只显示 5 个元素!

这里有工作代码:http://plnkr.co/edit/VszvMnWCGb662azo4wAv?p=preview

改变了什么?您的指令称为 directiveWhenScrolled 所以调用:

scope.$apply(attr.directiveWhenScrolled);

代替
scope.$apply(attr.whenScrolled);

让我们如何处理静态限制。将其更改为变量(记住定义默认值):
<li ng-repeat="i in items | limitTo: limit">{{ i.Title }}</li>

现在你的 loadMore 函数应该是这样的:
$scope.loadMore = function() {
$scope.limit += 5;
};

关于AngularJS - 一个简单的无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com