2014-10-27 6 views
5

में स्क्रॉल ईवेंट में मेरे पास एक स्क्रॉलबार वाला एक div है। अब मैं एक घटना प्राप्त करना चाहता हूं, जो हर बार ट्रिगर करता है, उपयोगकर्ता स्क्रॉल करता है।AngularJS

क्या यह AngularJS में संभव है, या क्या मुझे इसके लिए jQuery का उपयोग करना है?

संपादित करें: मैं अब तक निम्नलिखित के साथ आया था:

// JS 
.directive('scroll', function() { 
    return function(scope, element, attrs){ 

     angular.element(element).bind("scroll", function(){ 
      console.log(1); 
     }); 
    }; 
}); 

// HTML 
<div class="wrapper" style="height: 1550px" scroll> 
[...] 
</div> 

लेकिन वह काम नहीं करता (मैं अपने Firebug-कंसोल में कोई लॉग नहीं दिख रहा है)।

उत्तर

2

आप इवेंट श्रोता जोड़ने के लिए jquery का उपयोग करेंगे, और हो सकता है कि यह किसी तत्व को संलग्न करने के लिए कोणीय निर्देशों के अंदर हो।

page.html:

<div my-scroller> 

myscroller.js:

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

    return { 

     restrict: 'A', 
     link: function(scope,elem,attrs){ 
      $(elem).on('scroll', function(evt){ 
       console.log(evt.offsetX + ':' + evt.offsetY); 
      }); 
     } 

    } 

}); 

संपादित करें: निश्चित रूप से आप और भी jQuery का उपयोग करने की जरूरत नहीं है। कोणीय के jqLite इस के लिए पर्याप्त होता है, तो आप सिर्फ jQuery रैपिंग बिना तत्व कहेंगे:

elem.on('scroll', ... 
+0

ध्यान दें कि यह जरूरी jQuery का उपयोग नहीं करता है, यह jqLite (उपयोग कर रहा है https://docs.angularjs.org /api/ng/function/angular.element) – NevilleS

+0

@NevilleS सही, मैंने इसे $() के अंदर लपेट लिया ताकि यह jQuery का उपयोग कर सके। – frankies

+1

आपको हालांकि इसकी आवश्यकता नहीं है; jqLite jQuery को शामिल करने की आवश्यकता से परहेज करते हुए, 'ऑन()' विधि (कुछ प्रतिबंधों के साथ) प्रदान करता है। – NevilleS

9

कोणीय 1.6 के लिए समाधान: के बजाय "scroll" की

.directive("scroll", function() { 
return { 
    link: function(scope, element, attrs) { 
     element.bind("wheel", function() { 
     console.log('Scrolled below header.'); 
     }); 
    } 
} 

})

उपयोग "पहिया" । मुझे खोजने में कुछ घंटे लगते हैं।

0

सेर्गेई का जवाब मुझे एक छोटे से मदद की है, लेकिन क्या मेरे लिए काम समाप्त हो गया यह था:

.directive("scroll", function ($window) { 
    return { 
     link: function() { 
     angular.element($window).bind("wheel", function() { 
      console.log('Scrolling'); 
     }); 
     } 
    } 
})