Я хочу, чтобы сортировать/заказывать свою дату, исходящую от 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;
};
...
но он не работает, возможно, он получает данные через обратный вызов?
Согласно документам AngularFire, firebaseArray
является регулярным массивом. Вы можете делать все, что вам нравится в регулярном массиве. Однако они сказали:
Хотя использование атрибутов чтения и методов, таких как length и toString(), отлично справляется с этим массивом, вы должны избегать прямого манипулирования массивом. Такие методы, как splice(), push(), pop(), shift(), unshift() и reverse(), приведут к тому, что локальные данные перестанут синхронизироваться с сервером.
Возможно, вам захочется создать функцию в контроллере, которая захватывает этот массив, копирует и сортирует его там, поскольку сортировка - это просто логика пользовательского интерфейса и не имеет ничего общего с базовой структурой данных.