2013-08-13 27 views
20

मुझे आशा है कि आप मदद कर सकते हैं, सभी को इंटरनेट पर किया गया समाधान की तलाश में और नहीं मिल सकता है ..प्रगतिशील लोड हो रहा है, कोणीय जे एस

आप में से किसी को पता कैसे प्रगतिशील लागू करने के लिए के रूप में सामग्री की भरी हुई है आप पेज को स्क्रॉल करते हैं? अन्यथा 1000 छवियां एक ही समय में लोड होंगी।

बहुत बहुत धन्यवाद।

उत्तर

17

मैं JQuery अनंत समाधान othe उपयोग करने के लिए नहीं करना चाहता था मेरे मोबाइल ऐप के रूप में पोस्ट किया गया आर लड़का JQuery का उपयोग नहीं करता है .. इसके लिए JQuery लोड करने में कोई बिंदु नहीं है।

किसी भी तरह से मुझे शुद्ध जेएस में जेएस फीड मिला जो इस समस्या को हल करता है।

एचटीएमएल

<div id="fixed" when-scrolled="loadMore()"> 
    <ul> 
     <li ng-repeat="i in items"></li> 
    </ul> 
</div> 

जावास्क्रिप्ट

function Main($scope) { 
    $scope.items = []; 
    var counter = 0; 
    $scope.loadMore = function() { 
     for (var i = 0; i < 5; i++) { 
      $scope.items.push({ 
       id: counter 
      }); 
      counter += 10; 
     } 
    }; 
    $scope.loadMore(); 
} 

angular.module('scroll', []).directive('whenScrolled', function() { 
    return function(scope, elm, attr) { 
     var raw = elm[0]; 
     elm.bind('scroll', function() { 
      if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { 
       scope.$apply(attr.whenScrolled); 
      } 
     }); 
    }; 
}); 

स्रोत: http://jsfiddle.net/vojtajina/U7Bz9/

+2

यह समाधान पृष्ठ आकार (उपयोगकर्ता द्वारा) या div resize से निपटता नहीं है, इसलिए आपको रिक्त स्थान के साथ छोड़ा जा सकता है भले ही अधिक आइटम "प्रतीक्षा" जोड़े जा सकें। – mmaclaurin

+2

यह एंगोकुल के रूप में अनंत स्क्रॉलिंग उत्तर की तरह, कोणीय के रूप में भी उपयोग करता है। – Guinn

23

अनंत स्क्रॉलिंग निर्देश का उपयोग करें। ngInfiniteScroll

DEMO


एचटीएमएल

<div ng-app='myApp' ng-controller='DemoController'> 
    <div infinite-scroll='loadMore()' infinite-scroll-distance='2'> 
    <img ng-repeat='image in images' ng-src='http://placehold.it/225x250&text={{image}}'> 
    </div> 
</div> 

जे एस

var myApp = angular.module('myApp', ['infinite-scroll']); 
myApp.controller('DemoController', function($scope) { 
    $scope.images = [1, 2, 3, 4, 5, 6, 7, 8]; 

    $scope.loadMore = function() { 
    var last = $scope.images[$scope.images.length - 1]; 
    for(var i = 1; i <= 8; i++) { 
     $scope.images.push(last + i); 
    } 
    }; 
}); 
+0

क्या कोई गैर jQuery समाधान है? क्योंकि यह एक मोबाइल ऐप के लिए है। – TheNickyYo

+7

डिफ़ॉल्ट रूप से, AngularJS ** ** jQuery का उपयोग नहीं करता है। और ज़िप्टो निश्चित रूप से एक खराब विकल्प है (https://github.com/angular/angular.js/pull/3350) – Utopik

+0

लिंक टूटे हुए हैं –

0

बेन नाडेल इस के लिए एक अच्छा समाधान है, जहां वह खाता दोनों खिड़की और दस्तावेज़ का आकार बदलने में लेता है । वह हर एनजी-दोहराना नोड के बाद एक पश्चाताप से बचाता है। Check it out

0

मैंने एक मॉड्यूल बनाया है जो लगभग ngInfiniteScroll जैसा ही है, लेकिन jQuery पर निर्भर नहीं है। यह खाते में आकार बदलने वाली खिड़की लेता है। ngInfiniteScroll मेरे आवेदन में ठीक से प्रदर्शन नहीं कर रहा था इसलिए मैंने अपना खुद का निर्माण किया है और यह बहुत हल्का है।

https://github.com/Bram77/su-endless-scroll

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। –

संबंधित मुद्दे