我試圖展示最新的廣告,我將一些廣告保存到Firebase中,並希望顯示添加的最後一個廣告,它們使用timestamp屬性。limitTo(angularjs)或limitToFirst(firebase)無法按預期方式工作
如果我沒有limitTo創建NG重複,它按預期工作,但是當我使用limitTo甚至limitToFirst,預期這是行不通的,它正確地顯示項目的數量我會在開始時顯示,但會跳過其中一些,當我點擊加載按鈕時,它會加載更多廣告並顯示從一開始就應該存在的廣告。
請注意,它應該顯示兩個廣告日期27日十月但它只顯示一個。
這裏有一個演示一個plunkr: https://plnkr.co/edit/Ae8rlbD8Uob5TrAHrivz?p=preview
app.controller('publicCtrl', function($scope, $firebaseArray) {
$scope.loadmore = 6;
$scope.latest = "-Addate";
var listads = new Firebase("https://milocal.firebaseio.com/Users/Ovalle");
$scope.listads = $firebaseArray(listads);
$scope.loadmoreads = function(){
//console.log("Cargando anuncios");
$scope.loadmore += 2;
$scope.listads = $firebaseArray(listads);
console.log($scope.loadmore);
}
});
在HTML
:
ng-repeat="ads in filteredAds = (listads | limitTo: loadmore | orderBy: latest)"
希望有人能解釋我什麼,我做錯了。
謝謝。
你絕對不會過濾從火力地堡查詢任何東西。 '$ firebaseArray(Firebase(「https://milocal.firebaseio.com/Users/Ovalle」))'將加載該位置的所有孩子。你可以指向定義那些'limitTo'和'orderBy'的文檔嗎?這樣我就可以理解這應該如何工作。 –
您首先通過限制數組,從而有效地獲取無序數組的前6個元素,然後對這6個元素進行排序。你需要相反的方法:對數組進行排序,使其具有最新的第一個,並且只顯示6個第一個:'listads | orderBy:最新| limitTo:loadmore'。 –
@FrankvanPuffelen感謝您的幫助。 limitTo和orderBy來自我認爲的angularjs方面,我使用它們來嘗試過濾從該查詢中檢索的數據。但是從firebase方面我也嘗試var listads = new Firebase(「https://milocal.firebaseio.com/Users/Ovalle」); $ scope.listads = $ firebaseArray(listads.orderByChild(「 - Addate」)。limitToFirst(6));但它也行不通,或者我錯過了一些東西。 –