/ / Cómo ver el elemento ng en el desplazamiento cuando está a la vista en Angular JS - javascript, angularjs

Cómo ver el elemento ng en el desplazamiento cuando está a la vista en Angular JS - javascript, angularjs

Ese es mi código y no funciona. ¿Qué está mal con eso?

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");
});
};
};
}]);

Respuestas

0 para la respuesta № 1

Dar una oportunidad por código de forma más angular

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;
});
};
});
}]);

Y me gustaría sugerir que no debería jugar con DOM desde el controlador angular, creo que la directiva sería la mejor manera de hacerlo. isScrolledIntoView = function(elem) {...} La función está haciendo.


-1 para la respuesta № 2

Puede agregar un detector de eventos en su archivo JS paraEscucha la posición de esa identificación. En otras palabras, es probable que deba hacer una directiva que se adjunte a lo que desea mostrar, y en esa directiva desea que la posición siempre se envíe. Por lo tanto, use jquery en una nueva directiva y haga que haga ping. es la posición, entonces si la posición de ese es un valor ay que está en el bingo del monitor.

En otras palabras, si su monitor tiene 1000px de altura,y su elemento es 1400px a continuación, se desplaza 400px hacia abajo, jquery reconocerá que la altura de desplazamiento de la ventana ha cambiado, luego puede activar una función.

No quiero darle el código, sino una comprensión de alto nivel. ¿Esto ayuda?

$("#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
})