我想按来自firebase的日期排序。angular排序处理ng-repeat ... | orderBy:'<value>'
的方式与传统方式不同,因为firebase正在返回对象,angular只能在数组上排序。
app.service('ContestantsService', function ($firebaseArray, FIREBASE_URI) {
var service = this;
var ref = new Firebase(FIREBASE_URI);
var contestants = $firebaseArray(ref);
service.getContestants = function () {
return contestants; // <= this one i want to sort bis the 'score'
};
不知怎么的,我无法通过angularfire api使用.orderBy
。有没有一种方法可以以排序的方式获取数据?
更新:
我添加了以下内容:
...
contestants.sort(compare);
function compare(a, b) {
return a.score < b.score;
};
...
但它不起作用,也许是通过回调获取数据?
根据AngularFire文档,firebaseArray
是一个正则数组。你可以像正则数组一样做所有你能做的事情。然而,他们确实说:
虽然使用读取属性和方法(如length和toString())在这个数组上效果很好,但应该避免直接操作数组。像splice()、push()、pop(),shift()、unshift()和reverse()这样的方法会导致本地数据与服务器不同步。
您可能希望在控制器中创建一个函数来获取这个数组,复制并排序,因为排序只是UI逻辑,与数据的底层结构无关。