【发布时间】:2016-10-25 22:43:31
【问题描述】:
我正在使用 ngTables 以表格格式加载我的数据并显示分页。我的数据是从 Firebase 数据库加载的,目前长度为 9。所以我想每页显示三行。
下面是我的代码,当我的页面加载时,所有九行都加载在第一页上,而我将计数设置为 3,并且当我点击页面时,它不会继续。
这还有一个问题,过滤也不起作用。
这是我在 HTML 视图中的 ng-table 并没有改变:
<div ng-controller="mycontroller">
<strong>Filter:</strong> {{tableParams.filter()|json}}
<table ng-table="tableParams" show-filter="true" class="table table-striped">
<tr ng-repeat="obj in mylist">
<td data-title="'Department'" filter="{ 'name': 'text' }">{{ obj.department }}</td>
<td data-title="'Lastname'" >{{ obj.lastname }}</td>
<td data-title="'City'">{{ obj.city }}</td>
</tr>
</table>
</div>
和mycontroller.js:
app.controller('mycontroller', ["$scope", "$filter", "ngTableParams", "DatabaseRef", "$firebaseArray",
function ($scope, $filter, ngTableParams, DatabaseRef, $firebaseArray) {
//get all data from firebase database
var mydb = DatabaseRef.ref("projects").orderByKey();
$scope.mylist = $firebaseArray(mydb);
var data = $scope.mylist;
data.$loaded().then(function(data) {
console.log(data.length); // data is loaded here, and the length is 9
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 3, // count per page
filter: {
name: '' // initial filter
}
}, {
total: data.length, // length of data
getData: function ($defer, params) {
// use build-in angular filter
var orderedData = params.filter() ? $filter('filter')(data, params.filter()) : data;
$scope.users = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
params.total(orderedData.length);
// set total for recalc pagination
$defer.resolve($scope.users);
}
});
});
}]);
【问题讨论】:
标签: javascript angularjs firebase firebase-realtime-database ngtable