Javascript 从事件处理程序函数返回true
我用Angular调用这个工厂函数,传入一个百分比值作为参数:Javascript 从事件处理程序函数返回true,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我用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 = {
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;
}
我想要的是,当滚动条件为true时,fetch函数返回true。谢谢。你的方法行不通。在:
if(scroll_factory.fetch(50)) { ... }
您已经在对fetch
函数进行求值(函数在此点返回一个值)
您需要重新考虑,fetch\u位置
回调是连续计算的
您想将scroll spy功能作为单独的模块使用吗
.factory('ScrollSpy', function($document, $window) {
return function(callback) {
$document.on('scroll', function(e) {
var y = ...
if ( y > 123)
callback(y);
})
};
})
解决这个问题的一种方法是提供一个工厂,它接受一个回调,这个回调可以根据您的需求进行评估
我举了一个小例子,希望能有所帮助:
fetch\u position
不在javascript作用域中fetch()
之外的任何地方。如果您想要的是真/假…为什么首先要将工厂函数绑定到滚动处理程序。无法从事件处理程序返回。真的不清楚你想做什么整体。