Распечатайте список в обратном порядке или поместите новые элементы перед первыми

Я начинаю с AngularJS и Firebase. Я ищу способ вставить новые элементы в список (размещенный в Firebase) вверху или распечатать последний элемент списка вверху. Фильтр «orderBy» из Angular у меня не работает, потому что это список.

Мой фактический код для вставки элементов:

var ref = new Firebase("https://[here is my instance].firebaseio.com/");
$scope.lineas = [];
angularFire(ref, $scope, "lineas");
$scope.agregarLinea = function() {
   $scope.lineas.push({texto: $scope.linea});
   $scope.linea = "";
};

И для списка предметов:

<ul class='lineas'>
    <li ng-repeat="linea in lineas">
        <span>{{linea.texto}}</span>
    </li>
</ul>

Спасибо заранее за вашу помощь.


person Stefano Vettorazzi    schedule 30.09.2013    source источник
comment
Не могли бы вы подробнее рассказать, почему не работает orderBy? Является ли $scope.lineas объектом или массивом?   -  person Anant    schedule 01.10.2013
comment
Извини @Анант. $scope.lineas — это массив. Ответ от Джеффа Илсе сработал для меня.   -  person Stefano Vettorazzi    schedule 02.10.2013


Ответы (2)


когда вы используете неявную привязку данных в angularfire, он возвращает объект, который нельзя использовать в orderBy в angular. Вместо этого вы можете использовать angularFireCollection.

var ref = new Firebase("https://[here is my instance].firebaseio.com/");
$scope.lineas = [];
$scope.lineas = angularFireCollection(ref);
$scope.agregarLinea = function() {
   $scope.lineas.add({texto: $scope.linea});
   $scope.linea = "";
};

идентификатор, сгенерированный firebase, основан на дате, поэтому его можно использовать для сортировки:

<ul class='lineas'>
    <li ng-repeat="linea in lineas | orderBy:'-$id'">
        <span>{{linea.$id}} - {{linea.texto}}</span>
    </li>
</ul>
person Jeff Ilse    schedule 01.10.2013

Вы можете использовать функцию JavaScript splice() для вставки в начало массива

$scope.lineas.splice(0, 0, {texto: $scope.linea});
person zs2020    schedule 30.09.2013