gpt4 book ai didi

angularjs - 当用户在angular js中滚动到顶部时如何获取事件?

转载 作者:行者123 更新时间:2023-12-03 07:58:00 25 4
gpt4 key购买 nike

您能否告诉我如何在用户滚动到顶部时获取事件。实际上我在我的示例中使用 ng-repeat。我想在用户滚动到底部并滚动到顶部时获取事件。我有一个 div我使用 ng-repeat 可以在用户滚动后移动到顶部时获得顶部事件。实际上,当用户滚动到 div 的底部和顶部时,我需要显示警报。这是我的代码

<body ng-controller="MyController">
<div style="width:90%;height:150px;border:1px solid red;overflow:auto">
<div ng-repeat="n in name">{{n.name}}</div>
</div>

最佳答案

您可以在可滚动的 div 上放置指令以监听 scroll 事件并检查是否到达顶部或底部。

因此,使用您的 HTML,您的 div 将如下所示:

<div exec-on-scroll-to-top="ctrl.handleScrollToTop"
exec-on-scroll-to-bottom="ctrl.handleScrollToBottom"
style="width:90%;height:150px;border:1px solid red;overflow:auto">
<div ng-repeat="n in name">{{n.name}}</div>
</div>

添加了新指令 exec-on-scroll-to-topexec-on-scroll-to-bottom。每个都指定了 Controller 中的一个函数,当指令检查的特定事件发生时应该执行该函数。

exec-on-scroll-to-top 看起来像这样,只是检查可滚动 div 的 scrollTop 属性是否为 0:

myapp.directive('execOnScrollToTop', function () {

return {

restrict: 'A',
link: function (scope, element, attrs) {
var fn = scope.$eval(attrs.execOnScrollToTop);

element.on('scroll', function (e) {

if (!e.target.scrollTop) {
console.log("scrolled to top...");
scope.$apply(fn);
}

});
}

};

});

exec-on-scroll-to-bottom 看起来像这样(请记住,当元素的 (scrollHeight - scrollTop) === clientHeight):

myapp.directive('execOnScrollToBottom', function () {

return {

restrict: 'A',
link: function (scope, element, attrs) {
var fn = scope.$eval(attrs.execOnScrollToBottom),
clientHeight = element[0].clientHeight;

element.on('scroll', function (e) {
var el = e.target;

if ((el.scrollHeight - el.scrollTop) === clientHeight) { // fully scrolled
console.log("scrolled to bottom...");
scope.$apply(fn);
}
});
}

};

});

Here's a plunk .打开控制台查看滚动到顶部或底部时记录的消息。

关于angularjs - 当用户在angular js中滚动到顶部时如何获取事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713293/

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