कोड:मेरी फ़ायरबेस अनंत स्क्रॉल में क्रमिक रूप से डेटा को व्यवस्थित कैसे करें?
<script>
var app = angular.module('app', ['firebase']);
app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {
console.log(<%=lastID%>);
$scope.data = [];
var _n = Math.ceil(($(window).height() - 50)/(350)) + 1;
var _start = <%= lastID %>;
var _end = <%= lastID %> + _n - 1;
$scope.getDataset = function() {
fb.orderByChild('id').startAt(_start).endAt(_end).limitToLast(_n).on("child_added", function(dataSnapshot) {
$scope.data.push(dataSnapshot.val());
$scope.$apply()
console.log("THE VALUE:"+$scope.data);
});
_start = _start + _n;
_end = _end + _n;
};
$scope.getDataset();
window.addEventListener('scroll', function() {
if (window.scrollY === document.body.scrollHeight - window.innerHeight) {
$scope.$apply($scope.getDataset());
}
});
});
// Compile the whole <body> with the angular module named "app"
angular.bootstrap(document.body, ['app']);
</script>
स्थिति:
lastID बनाया पिछले पोस्ट की आईडी है। वे पीछे की तरफ जाते हैं (-1 से अंतिम तक)।
यह समाधान पूरी तरह से काम करता है जब कुछ पोस्ट हटा दिए जाते हैं।
(पोस्ट नवीनतम से सबसे पुराने (अंतिम आईडी से -1 तक) का आदेश दिया जाता है)।
उदाहरण के लिए, यदि 16 पद हैं, lastID = -16।
यदि मैं पद -13 से -5 और पोस्ट -3 हटा देता हूं, तो अंतिम आईडी -16 पर रहता है।
जिसका अर्थ है कि जब पृष्ठ लोड होता है, तो 3 पहली पोस्ट (-16 से -14) लोड होने के बाद कोई पोस्ट दिखाई नहीं देती है और मुझे पोस्ट -4 दिखाई देने के लिए बार-बार स्क्रॉल करने की आवश्यकता होती है।
प्रश्न:
कैसे मुझे यकीन है कि अगर कुछ पोस्ट हटा दी जाती हैं, मेरे अनंत स्क्रॉल स्क्रिप्ट inexisting पदों की आईडी को छोड़ देगा और सिर्फ 3 निकटतम पोस्ट लोड कर सकते हैं?
मैं क्या जांच की गई:
मैं इस पर ध्यान:
Display posts in descending posted order
लेकिन मैं मैं अपने अनंत स्क्रॉल के अंदर उन समाधानों कैसे लागू होता है के रूप में यकीन नहीं है। कोई विचार ?
आपकी तर्क ध्वनि है और तीन आइटम लोड हो जाते हैं यदि उदाहरण के लिए मैं -1 से -6 की सूची में -2, -3 और -5 हटा देता हूं। समस्या यह है: चूंकि हमने endAt() को हटा दिया है, इसलिए मैं दूसरी बार स्क्रॉल कर सकता हूं और -2 और -3 फिर से लोड हो जाते हैं। वास्तव में, डेटा के पहले सेट के लिए lastID = -6, लेकिन अंतिम स्क्रॉल के लिए lastID = -3 और दूसरी स्क्रॉल के लिए अंतिम आईडी = 0। – Coder1000
मैं पिछले आइटम भरी हुई और उस को _start सेट की आईडी प्राप्त करने की आवश्यकता होगी। लेकिन मैं अपने फायरबेस ऑर्डर फ़ंक्शन के अंदर अंतिम आइटम कैसे चुन सकता हूं? – Coder1000
@ कोडर 1000 कृपया मेरे अपडेट किए गए उत्तर को देखें –