Firebase + Angularjs заказать

0

Я хочу, чтобы сортировать/заказывать свою дату, исходящую от firebase. он не работает традиционным способом, как угловое упорядочение обрабатывает ng-repeat... | orderBy:'<value>' ng-repeat... | orderBy:'<value>', потому что firebase возвращает объект назад, а угловой может сортироваться только по массиву.

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'
  };

Как-то я не могу использовать .orderBy by angularfire api. Есть ли способ получить данные отсортированным способом?

Обновить:

Я добавил следующее:

...
contestants.sort(compare);
function compare(a, b) {
    return a.score < b.score;
};
...

но он не работает, возможно, он получает данные через обратный вызов?

Теги:
order
angularfire

1 ответ

1

Согласно документам AngularFire, firebaseArray является регулярным массивом. Вы можете делать все, что вам нравится в регулярном массиве. Однако они сказали:

Хотя использование атрибутов чтения и методов, таких как length и toString(), отлично справляется с этим массивом, вы должны избегать прямого манипулирования массивом. Такие методы, как splice(), push(), pop(), shift(), unshift() и reverse(), приведут к тому, что локальные данные перестанут синхронизироваться с сервером.

Возможно, вам захочется создать функцию в контроллере, которая захватывает этот массив, копирует и сортирует его там, поскольку сортировка - это просто логика пользовательского интерфейса и не имеет ничего общего с базовой структурой данных.

  • 0
    thx @ joseph-the-dreamer это все еще не работает. есть идеи почему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню