有人为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未定义。为什么???
答案 0 :(得分:1)
来自$ firebase的文档:
服务总是返回一个对象(它永远不会是一个数组或 原始)。如果Firebase引用指向原始值,则为 将包含在一个对象中,该对象具有一个名为$ value的键,其中包含 原始价值。如果引用指向一个数组,你会得到一个 将数组索引作为键的对象。如果你想要一个原生数组 请按优先顺序排序,请查看orderByPriority filter。
考虑到这一点,$ scope.getKonten和data都是对象;对象没有像数组一样的.length属性,这解释了未定义的特性。