2016-04-02 9 views
2

Ich habe dieses Scrollen div:Ionic/Winkel Richtlinie binden blättern

<div class="list"> 
    <div class="item" ng-repeat="post in posts"> 
    <img src="post.img" is-visible/> 
    </div> 
</div> 

und dies in einer Richtlinie:

angular.element(window).on('DOMContentLoaded load resize scroll', function() { 
    console.log("window change"); 
}); 

Das Ziel ist, blättern zu erkennen. Das Problem ist, dass nur load und resize den Konsolenkommentar auslösen. Wenn Sie die Liste auf- und abwärts scrollen, wird sie nicht ausgelöst. Warum nicht?

Antwort

1

Du Scrollen auf bestimmte div die ng-repeat Richtlinie hat, & Sie blättern auf window angewendet hatte. Die würden nicht brennen, bis Sie zu Fenster scrollen.

Im Idealfall sollten Sie Scroll-Ereignis auf bestimmte, die Wrapper auf ng-repeat Element würde festlegen. So kann das als Rollbalken-Container für posts Sammlung dienen.

Markup

<div is-visible id="post-list" class="list" style="overflow-y:scroll;width: 400px;height: 120px;border: 1px solid gray;"> 
    <div id="post-{{$index}}" class="item card" ng-repeat="post in posts"> 
    Message: {{post.message}} 
    </div> 
</div> 

Richtlinie

.directive('isVisible', function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
     element.on('scroll', function(){ 
      console.log('Scroll has been detected.'); 
     }) 
     } 
    } 
}) 

Plunkr

+1

meinst du 'auf ('resize'' oder' auf (' scroll''? – lilbiscuit

+0

@lilbiscuit danke für heads up..mistaken während Kopieren und Einfügen .. Ich schrieb console.log Nachricht richtig, aber verpasst, dass Ereignis Name Teil: D Tysm :-) –

+0

Immer noch nicht funktioniert ... Ich werde einen Codepen einrichten. – lilbiscuit

0

Der HTML-Code in einem <ion-content></ion-content> Block eingebettet ist, und das ist, was ... ist Scrollen so dass das, was ich brauche, um binden an:

HTML

<ion-content id="my-content"> 
    <div is-visible id="post-list" class="list" style="overflow-y:scroll;width: 400px;height: 120px;border: 1px solid gray;"> 
    <div id="post-{{$index}}" class="item card" ng-repeat="post in posts"> 
     Message: {{post.message}} 
    </div> 
    </div> 
</ion-content> 

RICHTLINIE

.directive('isVisible', function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
     var parent = angular.element(document.querySelector('#my-content')); 
     parent.on('scroll', function(){ 
      console.log('Scroll has been detected.'); 
     }) 
     } 
    } 
}) 
+0

kann ich wissen, warum Sie scroll auf 'ion-content' setzen? Ich denke, wenn man Containern als unmittelbares Kind in Betracht zieht, wäre das genauer. So wie ich es getan habe ... hast du Zeit bekommen, das zu überprüfen? –