从事件处理函数返回true

时间:2015-05-09 14:46:22

标签: 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 = {
        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。感谢。

1 个答案:

答案 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