firebase + angularjs order



我想按来自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逻辑,与数据的底层结构无关。

最新更新