2016-05-26 16 views
0

Dies ist nur ein Ausschnitt meines Codes, aber es ist zu groß, um es aufzustellen. Alles funktioniert, außer dass nur ein Teil von created_at_date in Ordnung ist. Wenn ich auf einen anderen Filter klicke, um abhängig von diesem Filter Daten hinzuzufügen oder zu entfernen, wird nur ein Teil davon an der richtigen Stelle eingegeben. Meine Hauptfrage ist: Gibt es eine Möglichkeit, alle Daten richtig zu sortieren und trotzdem alles andere zu ermöglichen? Alle Hilfe ist willkommen, DankeorderBy funktioniert nicht mit Paginierung und Filtern

+0

Ich bemerkte, dass Sie fehlen '' Tag in ''. – Eric

+0

Wenn das Attribut orderBy nicht funktioniert, können Sie versuchen, diese Methode auf Ihrem Controller hinzuzufügen, und bevor Sie Lebensmittel in der Vorlage behandeln, können Sie das Array foods bestellen, bevor es der Vorlage ausgesetzt wird, zB 'foods = sortBy ('created_at_date'). Lebensmittel); 'oder' dir-paginate = "Essen in sortBy ('created_at_date', Lebensmittel) | ..." ' –

+0

@ShannonHochkins Ich probierte dein' dir-paginate = "Essen in sortBy ('created_at_date', foods) | filter: foodFilter | itemsPerPage: pageSize ">' aber keiner der Arrays wurde angezeigt. Ich verstehe nicht ganz, was Sie meinen, fügen Sie die Methode OrderBy dem Controller hinzu? – user3328281

Antwort

0

In Ihrem Controller können Sie die Methode hinzufügen, um das Array vor der Schleife über sie zu bestellen.

Angenommen, Ihre Lebensmittel-Array ein Array von Objekten, die jeweils mit einem Schlüssel von created_at_date und einem Wert:

App.controller('foodsController', function($scope) { 

    $scope.foods = [{ 
    created_at_date: 6791234 
    }, { 
    created_at_date: 9837245 
    }, { 
    created_at_date: 1234755 
    }]; 

    // create a method exposed to the scope for your template. 

    $scope.orderBy = function(key, array) { 
    // now you've received the array, you can sort it on the key in question. 
    var sorted = array.sort(function(a, b) { 
     return a[key] - b[key]; 
    }); 
    return sorted; 
    } 

}); 

nun auf der Vorlage, haben Sie eine Methode zur Verfügung, um Ihre Werte für Sie zu sortieren:

Die Methode orderBy, die wir auf Ihrem Controller erstellt haben, gibt ein Array zurück, aber es wird nur nach dem Schlüssel sortiert, der als erstes Argument der Funktion gesendet wird. Das zweite Argument ist das ursprüngliche Array, das Sie sortieren möchten.

Mindestens auf diese Weise können Sie überprüfen, ob Sie alle anderen Filter entfernen, um zu sehen, ob es richtig bestellt ist, wenn dann, nachdem Sie sie wieder in es Änderungen hinzufügen, weil diese Filter auch die Reihenfolge ändern.

Verwandte Themen