我在Angular中调用此工厂函数,传入一个百分比值作为参数:
if(scroll_factory.fetch(50)) {
// If the user has scrolled 50% of page height, do something.
};
scroll_factory.$inject = ['$window', '$document'];
function scroll_factory($window, $document) {
var factory = {
fetch: fetch,
fetch_position: fetch_position
}
return factory;
function fetch(percent) {
$document.on('scroll', fetch_position)
function fetch_position() {
var window_inner_height = $window.innerHeight;
var y = pageYOffset;
var percentage = (y / window_inner_height) * 100;
if (percentage > percent) {
// Condition true - return true for the outer fetch.
}
}
return false;
}
我想要的是当滚动条件为真时,fetch函数返回true。感谢。
答案 0 :(得分:0)
您的方法无效。在:
if(scroll_factory.fetch(50)) { ... }
您已经在评估(该函数返回此点的值)fetch
函数。
您需要重新考虑持续评估fetch_position
回调。
您希望将滚动间谍功能作为独立模块吗?
.factory('ScrollSpy', function($document, $window) {
return function(callback) {
$document.on('scroll', function(e) {
var y = ...
if ( y > 123)
callback(y);
})
};
})
解决此问题的一种方法是提供一个接受回调的工厂,可以根据您的需求进行评估。
我做了一个小例子,希望它有所帮助:http://plnkr.co/edit/du3dpMlaKYZFuy8WA0QL?p=preview