以相反顺序打印列表或在第一个之前放置新项目

时间:2013-09-30 22:27:48

标签: angularjs firebase angularfire

我从AngularJS和Firebase开始。我正在寻找在顶部的列表(托管在Firebase中)中插入新项目的方法,或者在顶部打印列表的最后一项。 来自Angular的过滤器'orderBy'对我来说不起作用,因为它是一个列表。

插入项目的实际代码:

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>

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

当你在angularfire中使用隐式数据绑定时,它会返回一个无法在angularBy中使用的对象。您可以使用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生成的id基于日期,因此可用于排序:

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

答案 1 :(得分:0)

您可以使用JavaScript的splice()函数插入数组的开头

$scope.lineas.splice(0, 0, {texto: $scope.linea});