AngularJS显示元素onScroll函数

时间:2017-11-27 09:05:26

标签: javascript angularjs

这是我们的javascript:

window.onscroll=function(){scrollShow()};
    function scrollShow(){
        if (document.documentElement.scrollTop>150){
            document.getElementById("myBtn").style.display="block";
        } else {
            document.getElementById("myBtn").style.display="none";
        }
    }

如何在AngularJS中创建相同的功能?

2 个答案:

答案 0 :(得分:1)

您可以通过创建指令

来完成此操作
<button id='myBtn' scroll-show></div>

app.directive('scrollShow', [function() {
  return {
    link: function (scope, elem, attrs) {
      elem.on('scroll', function (e) {
        if(....) {
            element.hide();
        } else {
            element.show();
        }
      });
    })
  }
}]);

答案 1 :(得分:0)

我认为最好的方法是创建一个指令。您可以将created指令附加到html标记/组件/指令,并将事件监听器附加到窗口。你可以尝试这种方法。

angular.module('myModule', [])

.directive('myScrollShowDirective', ['$window', function($window) {

  function link(scope, element, attrs) {
    var format,
        timeoutId;
    // or attach event in jquery style    
    $window.addEventListener('scroll', scrollShow);


    function scrollShow(){
        if ($window.document.documentElement.scrollTop>150){
            element.style.display="block";
        } else {
            element.style.display="none";
        }
    }

    element.on('$destroy', function() {
      $window.removeEventListener('scroll', scrollShow);
    });

  }

  return {
    link: link
  };
}]);