angular アプリ用のモジュールを作成しました。両方に関連付けた 2 つの同様のディレクティブがあります。
1 つ (whenScrolled) は、無限のページネーションのためにスクロールがページの下部に到達したときにトリガーされます。もう 1 つの (fromTop) は、ページの「トップに移動」リンクを非表示/表示するために使用できる「トップ」または「ボトム」のいずれかをトリガーします。これは私がそれらをセットアップする方法です:
angular.module('scroll', []).directive('fromTop', function() {
return function(scope, element, attributes) {
var raw = element[0]
var scrollDistance = Math.round(window.outerHeight)
window.onscroll = function() {
console.log(window.pageYOffset, raw.scrollHeight + scrollDistance)
if (window.pageYOffset >= raw.scrollHeight + scrollDistance) {
scope.position = 'bottom'
scope.$apply(attributes.fromTop)
} else {
scope.position = 'top'
scope.$apply(attributes.fromTop)
}
}
}
}).directive('whenScrolled', function() {
return function(scope, element, attributes) {
var raw = element[0]
var scrollDistance = Math.round(window.outerHeight)
window.onscroll = function() {
//console.log(window.pageYOffset, raw.scrollHeight - scrollDistance)
if (window.pageYOffset >= raw.scrollHeight - scrollDistance) {
scope.$apply(attributes.whenScrolled)
}
}
}
});
残念ながら、これは機能していません。「whenScrolled」ディレクティブが「fromTop」ディレクティブを上書きしているようで、fromTop が呼び出されることはありません。ただし、「whenScrolled」を削除すると、「fromTop」が正常に呼び出されます。どうしてこれなの?