我需要以相反的顺序向Firebase添加对象.或者在进行数据绑定时反转数据.或者按创建时间对对象进行排序.
var ref = new Firebase("https://[url].firebaseio.com/"); $scope.messages = $firebase(ref); $scope.addMessage = function(e) { $scope.messages.$add({title: $scope.title, body: $scope.msg, time: $scope.getDate() }); }{{msg.time| date: 'medium'}} {{msg.title}} {{msg.body}}
我尝试使用OrderBy属性进行ng-repeat,但这并不容易,因为在消息中存储了对象.
查看angularFire-seed中的聊天示例.它使用自定义反向过滤器
反向滤波器如下所示:
app.filter('reverse', function() { function toArray(list) { var k, out = []; if( list ) { if( angular.isArray(list) ) { out = list; } else if( typeof(list) === 'object' ) { for (k in list) { if (list.hasOwnProperty(k)) { out.push(list[k]); } } } } return out; } return function(items) { return toArray(items).slice().reverse(); }; });
用法如下:
<ul id="messages" ng-show="messages"> <li ng-repeat="message in messages | reverse">{{message.text}}</li> </ul>