2016-01-24 107 views
0

我試圖展示最新的廣告,我將一些廣告保存到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)" 

希望有人能解釋我什麼,我做錯了。

謝謝。

+0

你絕對不會過濾從火力地堡查詢任何東西。 '$ firebaseArray(Firebase(「https://milocal.firebaseio.com/Users/Ovalle」))'將加載該位置的所有孩子。你可以指向定義那些'limitTo'和'orderBy'的文檔嗎?這樣我就可以理解這應該如何工作。 –

+0

您首先通過限制數組,從而有效地獲取無序數組的前6個元素,然後對這6個元素進行排序。你需要相反的方法:對數組進行排序,使其具有最新的第一個,並且只顯示6個第一個:'listads | orderBy:最新| limitTo:loadmore'。 –

+0

@FrankvanPuffelen感謝您的幫助。 limitTo和orderBy來自我認爲的angularjs方面,我使用它們來嘗試過濾從該查詢中檢索的數據。但是從firebase方面我也嘗試var listads = new Firebase(「https://milocal.firebaseio.com/Users/Ovalle」); $ scope.listads = $ firebaseArray(listads.orderByChild(「 - Addate」)。limitToFirst(6));但它也行不通,或者我錯過了一些東西。 –

回答

0

我改變了你的Plunkr這樣:

var app = angular.module('plunker', ["firebase"]); 

app.controller('publicCtrl', function($scope, $firebaseArray) { 
    $scope.loadmore = 1; 
    $scope.latest = "-Addate"; 
    var listads = new Firebase("https://milocal.firebaseio.com/Users/Ovalle"); 
    var query = listads.orderByChild("-Addate").limitToFirst($scope.loadmore); 
    $scope.listads = $firebaseArray(query); 

    $scope.loadmoreads = function(){ 
    $scope.loadmore += 2; 
    var query = listads.orderByChild("-Addate").limitToFirst($scope.loadmore); 
    $scope.listads = $firebaseArray(query); 
    } 

}); 

它最初加載2項。然後,當你點擊「加載更多」按鈕,它加載4.然後6等

更新/叉plunkr:https://plnkr.co/edit/MUMerL?p=preview

+0

唯一的問題是,沒有正確排序,因爲我想顯示添加的最後一個廣告,這就是爲什麼我有** orderByChild(「 - Addate」)**而不是**添加**的反向順序 –

+0

正在搜索和搜索我發現這個帖子在哪裏解釋到底我需要什麼[鏈接](http://stackoverflow.com/questions/31282204/firebasearray-descending-order),我試圖存儲負面的時間戳,但無法做到這一點。如果我手動將其存儲在Firebase中,那麼我可以按照自己的想法查看訂單,但問題是我不知道如何通過代碼,任何示例來存儲它們? –

相關問題