Ich habe Seite mit ng-repeat
. Etwas wie:Ng-Repeat fügt neue Elemente zum Ende
<div class="full-row" ng-repeat="row in pendingRequests | partition:3 track by $index">
<div class="one-third" ng-repeat="request in row track by request.id" ng-mouseenter="EnterRequest(request)" ng-mouseleave="LeaveRequest(request)">
...
Jede Minute gibt es neue Anforderung an den Server für die neue Kollektion von pendingRequests
. Wenn nach 1 Minute Server-Rückgabe neue Sammlung von pendingRequests
neues Element wird am Ende ng-repeat
Block hinzugefügt, auch wenn dieses neue Element zuerst in der Sammlung ist, die vom Server zurückgegeben wird.
Wie kann ich das neue/hinzugefügte Element zuerst in ng-repeat
blockieren lassen? Ähnliche Fragen, die ich gefunden habe, ist über unshift
Element zur Sammlung. Aber ich habe eine Sammlung, die vom Server kommt, also füge ich keine neuen Elemente manuell hinzu.
2 @Toxantron:
Mögliche, mein Problem ist, weil ich 2 ng-repeat
haben und nur in den letzten Repeater verwende ich orderby
<div class="full-row" ng-repeat="row in pendingRequests | partition:3 track by $index">
<div class="one-third" ng-repeat="request in row | orderBy: '-modificationDate' track by request.id">
Und es gibt auch Code von partition
Filter
app.filter('partition', function() {
var cache = {};
var filter = function(arr, size) {
if (!arr) { return; }
var newArr = [];
for (var i=0; i<arr.length; i+=size) {
newArr.push(arr.slice(i, i+size < arr.length? i+size : arr.length));
}
var arrString = JSON.stringify(arr);
var fromCache = cache[arrString+size];
if (JSON.stringify(fromCache) === JSON.stringify(newArr)) {
return fromCache;
}
cache[arrString+size] = newArr;
return newArr;
};
return filter;
});
Dank für das Antwort-. Das macht Sinn, aber in meinem Fall funktioniert das nicht ... Neues Element ist immer am Ende – demo
Es scheint seltsam – demo
Ich brauche mehr Code oder Demo-JSON, um weiter zu helfen. – Toxantron