web-dev-qa-db-fra.com

Evénement de défilement de fenêtre AngularJS ne se déclenche pas

Je sais qu'il existe une question similaire concernant ce problème, mais aucune des solutions ne pourrait m'aider.

J'utilise AngularJS et je souhaite détecter l'événement de défilement. J'ai essayé beaucoup de versions sur la façon d'obtenir l'événement, mais au plus, il se déclenche lorsqu'il est chargé pour la première fois, puis plus jamais.

Mon dernier code que j'ai essayé était le suivant:

$($window).on('scroll', alert('scrolled'));

Mais j'ai aussi essayé ceci: 

et beaucoup plus, mais rien ne fonctionne.

Quelqu'un peut-il me dire ce que je fais mal?

Mise à jour: J'ai essayé la directive, cela fonctionne parfaitement avec safari MAIS cependant pas avec le chrome. Que se passe-t-il?

Update2: Cela fonctionne avec la vue mobile de chrome lorsque vous utilisez la touche Maj. Existe-t-il des restrictions sur le chrome du trackpad Apple? WTF?

8
threxx

Je voudrais juste utiliser 

$(window).scroll(function () { alert('scrolled') })

OU vous pouvez utiliser

angular.element($window).bind("scroll", function(e) {
    alert('scrolled')
})
5
James Freund

angular.element () n'injecte pas de fenêtre à votre contrôleur, utilise l'événement window.onscroll

$window.onscroll = function (){ console.log('window was scrolled!'); };

2