angular 1.X 滚动事件

2 篇文章 0 订阅
<div scroll-event>
    ...
</div>
//这个div要设置高度和可以滚动


app= angular.module("app", ["aaa", "bbb", "ccc"]);

app.controller('aController', ['$scope', '$http']);

app.directive('scrollEvent',function(){

  var obj = {

    restrict: 'A',//A匹配属性 E匹配标签 C匹配class M匹配注释

    link: function($scope, element, attr){


            $scope.$watch('data1',function(newVal,o,s){

                if(newVal){


                }

            })

            

            //获取当前滚动到的section的index

            function getSectionIndex(scrollTop){

                var sections = $("section[id^='menu']");

                var sectionIndex = -1;

                if(scrollTop<=headerHeight){

                    return sectionIndex;

                }

                for(var i = sections.length;i>=0;i--){

                    if(headerHeight + getHeight(i) < scrollTop +10){

                        sectionIndex = i;

                        break;

                    }

                }

                return sectionIndex;

            }

            

            //菜单点击事件---先解绑scroll事件,再绑定scroll事件

            $scope.openClick = function(index,menus,autoScroll){

                element.unbind('scroll');

                $scope.selectMenu(index);

                if(!autoScroll){

                    $('#tabbar2').animate({

                        'scrollTop':  headerHeight + getHeight(index) + "px"

                    }, 50);

                }

                setTimeout(function(){

                    element.bind('scroll',scrollEvent);

                },300); 

            }

       

            //给元素绑定滚动事件

            element.bind('scroll',scrollEvent);



            function scrollEvent(e){

                if($scope.showTabbar2){

                    var scrollTop = e.currentTarget.scrollTop;

                    var index = getSectionIndex(scrollTop);

                    if(index >= 0){

                        $scope.openClick(index,$scope.menus,true);

                        $scope.$apply();

                        menuPosition(index);    

                    }else{

                        $("#menu").removeClass("pox");

                    }

                }

            }

    }

  };

  return obj;

})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值