Sorting Angularjs ng-repeat by date

Sono relativamente nuovo per AngularJS. Potrebbe servirci di aiuto

Ho una tabella con le seguenti informazioni

E il codice js è il seguente (dopo le connessioni del controller)

 $scope.sortType = ''; $scope.sortReverse = false; 

Questo funziona perfettamente per l’ascesa e la discesa quando si ordina il nome.

Sfortunatamente funziona in modo simile anche nel caso della data (è in ordine alfabetico, piuttosto che per data).

Il formato della data che sto ottenendo dal backend (python) è in questo formato:

 i["date"] = i["date"].strftime("%B %d, %Y") September 13, 2016 <-- this format 

Capisco l’errore che ho fatto, ma non sono in grado di trovare la soluzione per questo.

Come posso ordinare per data?

Grazie in anticipo ragazzi.

Idealmente avresti un object ordinabile per la data. Un candidato è una data isoformattata:

 i["date"] = i["date"].isoformat() 

Ora l’ordinamento dovrebbe funzionare bene ma verrà visualizzato stordito. Quindi dovrai utilizzare un filtro data per formattarlo nell’interfaccia utente:

 
Referral Name Referral Name
name date
Referral Name Referral Name
name {{x.date | date : 'MMMM d, yyyy'}}

Come avrai notato, il valore che ricevi è un tipo di stringa e quindi viene ordinato alfabeticamente. È necessario convertirlo in data () in anticipo. Quindi, in pratica, ciò di cui hai bisogno è eseguire il loop sulla matrice di dati che hai ottenuto e aggiungere una nuova proprietà (o sostituirne una esistente) con un nuovo object Date:

 referral.forEach((ref) => { ref.date_obj = new Date(ref.date) }; 

Ho appena controllato, JavaScript sembra essere il formato di analisi “13 settembre 2016” piuttosto bene.