2014-10-01 115 views
0

我正在使用Firebase存储我的数据,我知道Firebase将数据存储为对象而不是数组。我已经解决了这个问题,并有其他过滤器的工作,但是当我尝试在我的ng-repeat中使用“orderBy:'date'”时,它不起作用。这里是标记:AngularJS orderBy日期过滤器无法正常工作使用Firebase

<div ng-repeat="event in events | limitTo:10 | filter:tfilter | orderBy: 'date'> 
    <div class="row"> 
    <div class="col-md-6"> 
     <h4>{{event.date | amDateFormat:'MMMM Do'}}</h4> 
    </div> 
    <div class="col-md-6"> 
     <h4>{{event.name}}</h4> 
    </div> 
    </div> 
</div> 

我也尝试使用orderBy:'event.date',但这也没有工作。任何人都知道解决方案

+0

取而代之的是什么?你有没有可用的例子? – 2014-10-01 23:47:36

+0

如果'events'直接从'$ firebase(xxx)'返回,那么事件的类型就是一个字典。你需要将它平铺为一个数组,并且过滤器将工作。 – zsong 2014-10-01 23:48:36

回答

0

想出来 - 超级简单。在我的mainSvc中,我返回的是对象而不是数组。下面的数组是对象。

angular.module("zenCityApp") 
.factory("mainSvc", function ($rootScope, $log, $firebase) { 

    var ref = new Firebase("https://zencity.firebaseio.com/events"); 

    var sync = $firebase(ref); 

    var getEvents = function() { 
    return sync.$asArray(); 

    }; 

    var addEvent = function (singleEvent) { 
    ref.push(singleEvent); 
    }; 

    return { 
    getEvents: getEvents, 
    addEvent: addEvent 
    } 

});