【发布时间】:2017-03-22 16:43:30
【问题描述】:
我根据另一个 Firebase 数据库过滤一个 Firebase 数据库,并将结果连接到一个 $scope 和 ng-repeat $scope 数组 projectslist 在一个带有 ng-repeat="obj in projectslist" 的 ngtable 中,效果很好!
但是,当我想将 ngTableParams 添加到我的表中时,它会中断并仅显示数组中的第一个对象。
这次我像这样重复:ng-repeat="obj in $data"。
这是串联数组的控制台日志:
这是控制器:
app.controller('ProjectCtrl', ["$scope", "$filter", "ngTableParams", "firebase", "Auth", "DatabaseRef", "$firebaseArray", "$firebaseObject",
function ($scope, $filter, ngTableParams, firebase, Auth, DatabaseRef, $firebaseArray, $firebaseObject) {
var userId = firebase.auth().currentUser.uid;
$scope.projectslist = [];
var projectsRef = DatabaseRef.ref('/users/' + userId).orderByKey().once("value")
.then(function onSuccess(snapshot) {
snapshot.child("projects").forEach(function (childSnapshot) {
var userprojects = childSnapshot.val();
var projectquery = DatabaseRef.ref("projects").orderByKey().equalTo(userprojects);
var list = $firebaseArray(projectquery);
$scope.list = $firebaseArray(projectquery);
list.$loaded(function(){
$scope.projectslist = $scope.projectslist.concat(list);
});
var data = $scope.list;
data.$loaded().then(function(data) {
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 7, // count per page
}, {
dataset: data,
filterSwitch: true,
getData: function ($defer, params) {
var filteredData = params.filter() ? $filter('filter')(data, params.filter()) : data;
var orderedData = params.sorting() ? $filter('orderBy')(filteredData, params.orderBy()) : data;
params.total(data.length);
// set total for recalc pagination
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});
});
});
}]);
问题是:
如何在 ngTableParams 正常工作的情况下对表中的数据进行 ng-repeat、过滤、排序、分页?
【问题讨论】:
标签: angularjs arrays firebase angularjs-ng-repeat firebase-realtime-database