使用Angularjs ui.bootstrap和Firebase进行分页

时间:2014-06-20 09:22:41

标签: angularjs pagination firebase

有人为angularjs和firebase没有ng-table分页的例子。 我的问题是$ scope.data.lenght未定义,我不知道如何使用firebase。

谢谢,克里斯

function KontenView($scope, $firebase, $filter, $resource) { 

        var FBBaseRef = new Firebase("https://xxxx.firebaseio.com/");
        var KontenRef = FBBaseRef.child("/posten/konto");
        $scope.getKonten = $firebase(KontenRef);


         $scope.currentPage = 1;
         $scope.numPerPage = 5;
         $scope.totalItems = $scope.objects.length;

        $scope.paginate = function(value) {
            var begin, end, index;
            begin = ($scope.currentPage - 1) * $scope.numPerPage;
            end = begin + $scope.numPerPage;
            index = $scope.getKonten.indexOf(value);
        return (begin <= index && index < end);
        };
};

所以我的第二次尝试:

function KontenView($scope, $firebase, $filter, $resource) { 

        var FBBaseRef = new Firebase("https://xxx.firebaseio.com/");
        var KontenRef = FBBaseRef.child("/posten/konto");
        $scope.getKonten = $firebase(KontenRef);

        $scope.getKonten.$on("loaded", function(data) {
                console.log(data); // not undefined
                $scope.totalItems = data.length;

                $scope.currentPage = 1;
                $scope.numPerPage = 5;


                $scope.paginate = function(value) {
                    var begin, end, index;
                    begin = ($scope.currentPage - 1) * $scope.numPerPage;
                    end = begin + $scope.numPerPage;
                    index = $scope.data.indexOf(value);
                    return (begin <= index && index < end);
                 };
        });
 };

控制台将显示数据,但data.lenght未定义。为什么???

1 个答案:

答案 0 :(得分:1)

来自$ firebase的文档:

  

服务总是返回一个对象(它永远不会是一个数组或   原始)。如果Firebase引用指向原始值,则为   将包含在一个对象中,该对象具有一个名为$ value的键,其中包含   原始价值。如果引用指向一个数组,你会得到一个   将数组索引作为键的对象。如果你想要一个原生数组   请按优先顺序排序,请查看orderByPriority filter

考虑到这一点,$ scope.getKonten和data都是对象;对象没有像数组一样的.length属性,这解释了未定义的特性。