为什么这个指令只适用于一个元素?

时间:2014-10-03 15:23:00

标签: javascript jquery angularjs

当我在我的角度应用程序中滚动时,我试图在他们进入视图时显示项目。问题是,一旦第一个元素显露出来,所有元素似乎都会显露出来。我做错了什么?

这是一个plnkr:http://plnkr.co/edit/nETvkzqKZvak5B6I4QpV

更新:我搞定了。有没有人对如何提高性能有任何想法。这很跳跃。

   .directive("scrollFade", function($window) {
    return function(scope, element, attrs) {
      angular.element($window).bind("scroll", function() {
        var bottom_of_object = $(element).offset().top + $(element).outerHeight();
        var bottom_of_window = $(window).scrollTop() + $(window).height();
        if (bottom_of_object < bottom_of_window) {  
          //in view  
          element.css('opacity', 1);
        } else { 
          //outside of view
          element.css('opacity', 0);
        }
        scope.$apply();
      });
    };
  });

1 个答案:

答案 0 :(得分:0)

您可以使用来自lodash或下划线库(http://lodash.com/docs#debounce)的debounce等功能,这可以提高您的性能。