Używam Firebase zapisać wiadomości, które mają następujące dane:Jak ngInfiniteScroll pobierać dane przez createdAt malejąco
createdAt: "Sun Apr 03 2016 18:32:46 GMT-0300 (BRT)"
Co staram się osiągnąć to, aby uzyskać najnowsze wiadomości, a potem ładuj starsze, gdy użytkownik przewija w dół.
Ze stanowiskami pobranymi przy użyciu polecenia ngInfiniteScroll Mogę zamówić desc przy użyciu <div ng-repeat="post in posts | orderBy:'-createdAt'">
, ale ngInfiniteScroll w pierwszej kolejności powinien zwracać stare posty. Zamawiam, ale zamawiam te starsze.
Próbowałem już używać tej samej logiki ("-createdAt"
) w ngInfiniteScroll, ale nie była ona skuteczna.
Moi js jest dość dużo, to:
var baseRef = new Firebase(FBURL).child("posts");
var scrollRef = new Firebase.util.Scroll(baseRef, "createdAt");
$scope.posts = $firebaseArray(scrollRef);
$scope.posts.scroll = scrollRef.scroll;
Bezpieczeństwo i zasady:
"posts": {
".read": true,
".indexOn": "createdAt",
"$post": {
".read": true,
".write": true,
"$other": {
".validate": true
}
}
}
Myślę, że problem polega na tym, że zamawiasz według daty jako ciąg, a nie jako obiekt Date. Spójrz na tę odpowiedź: http://stackoverflow.com/a/25306447/752142. – illagrenan
@illagrenan Moje zamówienie będzie działało dobrze ... Czy możesz powiedzieć, że zmieniając go na Date, ngInfiniteScroll rozpozna "-createdAt" '? – adolfosrs
Twoje pozycje są uporządkowane prawidłowo, jeśli wydrukujesz je bez ngInfiniteScroll za pomocą prostego ngRepeat? A jeśli użyjesz 'infinite-scroll = 'someService.nextPage()' elementy nie są zamówione? Mam rację? Prostym rozwiązaniem może być: pobieranie elementów z API, zamawianie ich w usłudze/kontroler, a następnie przesyłanie zamówionych danych z 'infinite-scroll = 'myMethod()''. – illagrenan