如何在Angular JS中进入视图时在滚动上显示元素

时间:2015-04-01 18:16:25

标签: javascript angularjs

这是我的代码而且不起作用。怎么了?

HTML

<i ng-show="whenIconsIntoView()" class="fa fa-mail"></i>

JS

app.controller('AboutCtrl', ['$scope', '$window', function($scope, $window){
    // some function to detect is scroll into user's view
    isScrolledIntoView = function(elem) {...}

    $window.onscroll = function() {
        $scope.whenIconsIntoView = function(){
            $scope.$apply(function() {
                return isScrolledIntoView('.icons');
            });     
        };
    };
}]);

2 个答案:

答案 0 :(得分:0)

尝试更多角度方式代码

app.controller('AboutCtrl', ['$scope', function($scope, $window) {
    // some function to detect is scroll into user's view
    isScrolledIntoView = function(elem) {...
    }

    $window[0].on('scroll', function() {
        $scope.whenIconsIntoView = function() {
            $scope.$apply(function() { //need to run digest cycle from events
                return (isScrolledIntoView('.icons')) ? true : false;
            });
        };
    });
}]);

我想建议您不要使用角度控制器中的DOM,我认为该指令是isScrolledIntoView = function(elem) {...}函数正在执行的最佳方法。

答案 1 :(得分:-1)

您可以在JS文件中添加事件侦听器以侦听该ID的位置。换句话说,您可能需要制作一个附加到您想要显示的事物的指令,并且在该指令中您希望始终发送该位置。因此,在新指令中使用jquery,并让它ping它的位置,然后如果它的位置是监视器宾果游戏上的y值。

换句话说,如果您的显示器高1000px,并且您的元素低于1400px,则向下滚动400px,jquery将识别您的窗口滚动高度已更改,然后您可以关闭一个函数。

不想给你代码,而是高层次的理解。这有帮助吗?

$("#scrollid").scroll(function(){
  // get current window height
//then get id position on page
// if window scroll overlaps with id position, set display:bock or whatever
})