Je tente d'utiliser AngularJS ng table de l'exemple: http://4dev.tech/2015/08/tutorial-basic-datatable-sorting-filtering-and-pagination-with-angularjs-and-ng-table/ng table v1.0.0: TypeError: Impossible de lire la propriété 'page' undefined
angular.module('ngTableTutorial', ['ngTable'])
.controller('tableController', function ($scope, $filter, NgTableParams) {
$scope.users = [{"id":1,"first_name":"Philip","last_name":"Kim","email":"[email protected]","country":"Indonesia","ip_address":"29.107.35.8"},
{"id":2,"first_name":"Judith","last_name":"Austin","email":"[email protected]","country":"China","ip_address":"173.65.94.30"},
{"id":3,"first_name":"Julie","last_name":"Wells","email":"[email protected]","country":"Finland","ip_address":"9.100.80.145"},
{"id":4,"first_name":"Gloria","last_name":"Greene","email":"[email protected]","country":"Indonesia","ip_address":"69.115.85.157"},
{"id":50,"first_name":"Andrea","last_name":"Greene","email":"[email protected]","country":"Russia","ip_address":"128.72.13.52"}];
$scope.usersTable = new NgTableParams({
page: 1,
count: 10
}, {
total: $scope.users.length,
getData: function ($defer, params) {
$scope.data = $scope.users.slice((params.page() - 1) * params.count(), params.page() * params.count());
$defer.resolve($scope.data);
}
});
});
<!DOCTYPE html>
<html ng-app="ngTableTutorial">
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
\t <meta name="viewport" content="width=device-width, initial-scale=1.0">
\t \t <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://rawgit.com/esvit/ng-table/master/dist/ng-table.min.css">
<script src="https://rawgit.com/esvit/ng-table/master/dist/ng-table.min.js"></script>
<!-- <link href="app/resources/css/style.css" rel="stylesheet" type="text/css"/>
\t <script src="app/resources/js/app.js" type="text/javascript"></script>-->
\t
</head>
<body>
<div ng-controller="tableController">
<table ng-table="usersTable" class="table table-striped">
<tr ng-repeat="user in data">
<td data-title="'Id'" >
{{user.id}}
</td>
<td data-title="'First Name'" >
{{user.first_name}}
</td>
<td data-title="'Last Name'" >
{{user.last_name}}
</td>
<td data-title="'e-mail'" >
{{user.email}}
</td>
<td data-title="'Country'">
{{user.country}}
</td>
<td data-title="'IP'" >
{{user.ip_address}}
</td>
</tr>
</table>
</div>
</body>
</html>
Et faire exception: TypeError: Impossible de lire la propriété 'page' de undefined
Je pense, parce que ng-table va à la nouvelle version 1.0.0. Et maintenant, cet exemple ne fonctionne pas. Et je ne peux pas comprendre comment réécrire l'exemple, de sorte qu'il fonctionne avec la nouvelle version ng-table?
Aidez-moi s'il vous plaît. UPD: Ou pouvez-vous juste poster un exemple autonome, avec ng-table 1.0.0, getdata, pagination et filtration? UPD: Si delete $ defer de getData params n'est pas utile. Il ne s'agit pas d'une exception, mais pas de données. Snippet montrent le problème:
UPD 16/08/2016 01:15 ajouter la ligne $ scope.data = $ scope.users.slice ((params.page() - 1) * params.count(), params.page() * params.count());
et maintenant les données montrent, mais pas de filtrage. Comment réécrire l'extrait de données de filtrage?
UPD 16/08/2016 01:36: string Ajouter
counts: [2, 4, 6, 10, 20],
et
<tr ng-repeat="user in $data track by user.id">
Et maintenant, la pagination et le filtrage est bon.
\t angular.module('ngTableTutorial', ['ngTable'])
.controller('tableController', function($scope, $filter, NgTableParams) {
\t $scope.users = [
\t { "id": 1, "first_name": "Philip", "last_name": "Kim", "email": "[email protected]", "country": "Indonesia", "ip_address": "29.107.35.8" },
\t { "id": 2, "first_name": "Judith", "last_name": "Austin", "email": "[email protected]", "country": "China", "ip_address": "173.65.94.30" },
\t { "id": 3, "first_name": "Julie", "last_name": "Wells", "email": "[email protected]", "country": "Finland", "ip_address": "9.100.80.145" },
\t { "id": 4, "first_name": "Gloria", "last_name": "Greene", "email": "[email protected]", "country": "Indonesia", "ip_address": "69.115.85.157" },
\t { "id": 50, "first_name": "Andrea", "last_name": "Greene", "email": "[email protected]", "country": "Russia", "ip_address": "128.72.13.52" }
\t ];
\t $scope.usersTable = new NgTableParams({
\t page: 1,
\t count: 2
\t }, {
\t total: $scope.users.length,
\t counts: [2, 4, 6, 10, 20],
\t getData: function(params) {
\t params.total($scope.users.length);
\t $scope.data = $scope.users.slice((params.page() - 1) * params.count(), params.page() * params.count()); \t
\t return $scope.data;
\t }
\t });
\t })
<html ng-app="ngTableTutorial">
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
\t <meta name="viewport" content="width=device-width, initial-scale=1.0">
\t \t <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.js"></script>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://rawgit.com/esvit/ng-table/master/dist/ng-table.min.css">
<script src="https://rawgit.com/esvit/ng-table/master/dist/ng-table.min.js"></script> \t
</head>
<body>
<div ng-controller="tableController">
<table ng-table="usersTable" class="table table-striped">
<tr ng-repeat="user in $data track by user.id">
<td data-title="'Id'" >
{{user.id}}
</td>
<td data-title="'First Name'" >
{{user.first_name}}
</td>
<td data-title="'Last Name'" >
{{user.last_name}}
</td>
<td data-title="'e-mail'" >
{{user.email}}
</td>
<td data-title="'Country'">
{{user.country}}
</td>
<td data-title="'IP'" >
{{user.ip_address}}
</td>
</tr>
</table>
</div>
</body>
</html>
Avez-vous regardé http://ng-table.com/#/loading/demo-external-array? On dirait que 'getData' prend' param' comme argument unique. –
@ just.ru Je fais getData paramètres simples, mais cela n'aide pas. Il ne s'agit pas d'une exception, mais pas de données. Snippet montre le problème: – katerinkadar