gpt4 book ai didi

javascript - AngularJS ngTable 分页不起作用,在一页上显示所有数据

转载 作者:行者123 更新时间:2023-11-29 16:46:40 25 4
gpt4 key购买 nike

我正在使用 ngTables 以表格格式加载我的数据并显示分页。我的数据是从 Firebase 数据库加载的,目前长度是 9。所以我想每页显示三行。

下面是我的代码,当我的页面加载时,所有九行都加载在第一页上,而我将计数设置为 3,而且当我点击页面时,它不会继续。

还有一个问题,过滤也不起作用。

这是我在 HTML View 中的 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);
}
});
});
}]);

最佳答案

这是有效的解决方案:

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
},
sorting: { city: "asc" }
}, {
filterSwitch: true,
total: 0, //data.length, // length of data
getData: function ($defer, params) {
// use build-in angular filter
var filteredData = params.filter() ?
$filter('filter')(data, params.filter()) :
$scope.mylist;

var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) : filteredData;

params.total($scope.mylist.length);
// set total for recalc pagination
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));


}
});
});
}]);

关于javascript - AngularJS ngTable 分页不起作用,在一页上显示所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com