JVG*_*JVG 1 html javascript infinite-scroll angularjs angularjs-directive
我正在尝试使用此AngularJS infinite-scroll指令.这是来源:
angular.module('infiniteScroll', [])
.directive('infiniteScroll', [ "$window", function ($window) {
return {
link:function (scope, element, attrs) {
var offset = parseInt(attrs.threshold) || 0;
var e = element[0];
element.bind('scroll', function () {
if (scope.$eval(attrs.canLoad) && e.scrollTop + e.offsetHeight >= e.scrollHeight - offset) {
scope.$apply(attrs.infiniteScroll);
}
});
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
这似乎仅适用于滚动框中包含的元素.这是一个演示这个的Plunker.
但是,我希望能够将这个简单的指令应用于静态的DOM元素,scope.$apply(attrs.infiniteScroll)当元素接近窗口滚动的底部时调用.
关于如何修改指令以允许这个的任何想法?我试图改变e.scrollTop到window.scrollTop,但无济于事,这有点超出了我目前的技术水平很遗憾.
我不完全确定我的问题是对的.如果你想要一个调用函数的指令,如果某个DOM元素接近整个窗口的可见区域,那么这样的指令如何:
myApp.directive('scrollTrigger', function($window) {
return {
link : function(scope, element, attrs) {
var offset = parseInt(attrs.threshold) || 0;
var e = jQuery(element[0]);
var doc = jQuery(document);
angular.element(document).bind('scroll', function() {
if (doc.scrollTop() + $window.innerHeight + offset > e.offset().top) {
scope.$apply(attrs.scrollTrigger);
}
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
将此元素放在HTML中可见区域下方的某处:
<div scroll-trigger="scrollEventCallback()" threshold="100">Trigger element</div>
Run Code Online (Sandbox Code Playgroud)
如果函数scrollEventCallback()在文档的当前可见区域下方100像素或更少,则调用该函数.请注意,我在这个例子中使用了jQuery,因此要使用它,你也必须包含它.我希望这就是你要求的.
| 归档时间: |
|
| 查看次数: |
6038 次 |
| 最近记录: |