Ich habe Daten vom Server sortiert. Es wird von einer unendlichen Schriftrolle aufgerufen.Wie überprüft man in der for-Schleife, ob Daten vom Server kommen?
Ich möchte Daten, die keine Wiederholung zu einem clientseitigen Array ist. Wenn die Duplizierung beginnt, möchte ich die unendliche Bildlauffunktion zurückgeben und beenden.
$scope.collections = [];
$scope.isBusy = false;
$scope.queryObject = {
size: 12,
sorter: 'timestamp',
sort: {
timestamp: -1
},
skip: 0
}
$scope.loadMore = function() {
if ($scope.isBusy == true) {
return;
}
$scope.isBusy = true;
Collect.all($scope.queryObject).then(function(res) {
for (var i = 0; i < res.data.length; i++) {
if ($scope.collections.length && res.data) {
for (var j = res.data.length - 1; j >= 0; j--) {
if ($scope.collections[0]._id == res.data[j]._id) {
console.log('match', res.data[j])
return;
}
}
$scope.collections.push(res.data[i])
}
else{
$scope.collections.push(res.data[i])
}
}
$scope.queryObject.skip += 12;
$scope.isBusy = false;
});
};
hier Mein Versuch ist res.data in umgekehrter Reihenfolge an den ersten Index der Sammlungen Array zu überprüfen. Wenn es eine Wiederholung gibt, endet das endlose Scroll/loadMore().
Ich bekomme immer res.data._id ist nicht definiert, aber wenn ich es entfernen und nur Sammlungen überprüfen [0] vs res.data [j] zeigt es sofort eine Übereinstimmung, und die console.log zeigt res.data [j] mit einer definierten ._id.
Ich bin mir da sicher etwas Grundlegendes vermisse ich hier.
wird immer noch wiederholt. Ich denke, meine ursprüngliche Logik ist fehlerhaft. – NoobSter
Dies sollte funktionieren. Bitte gib eine Geige. – lintu