L'ordinamento NGTABLE non funziona quando la rubrica viene cliccata
-
21-12-2019 - |
Domanda
Attualmente sto lavorando su una tabella che richiede un po 'di ordinamento.Poiché il progetto utilizza angolare (V1.2.12) ho iniziato a utilizzare il NGTABLE Module (v0.3.2).
L'ordinamento predefinito è il titolo, ma l'anno può anche essere utilizzato come opzione di ordinamento.Quando carico la pagina funziona bene, ma quando faccio clic su una tabella della tabella la colonna cliccata viene ordinata ma l'ordinamento non viene riflesso nell'intestazione, anche il parametro di ordinamento non è più impostato.
Quando avvio il debug di vedo che il params.Sorting () ritorna: {Titolo: indefinito} Da quel momento anche non è più possibile fare clic su un'intestazione ordinabile, non funziona solot fare altro ancora.
Penso che mi manchi qualcosa, non riesco a trovare cosa però
I miei dati sono i seguenti:
[{
"year": 2014,
"title": "Golden title"
}, {
"year": 2013,
"title": "Golden title"
}, {
"year": 2013,
"title": "Another title"
}, {
"year": 2014,
"title": "Whetshoverwerd xsade aas"
}, {
"year": 2013,
"title": "Another brilliant title"
}, {
"year": 2013,
"title": "Wherever I may SOAP"
}]
.
La vista:
<table ng-table="tableParams" class="table">
<tbody>
<tr ng-repeat="document in $data">
<td data-title="'Year'" sortable="'year'">{{document.year}}</td>
<td data-title="'Title'" sortable="'title'"><a href="#">{{document.title}}</a></td>
</tr>
</tbody>
</table>
.
La vista è una direttiva,
angular.module('appDirectives').directive('myModuleDirective', function () {
// Runs during compile
return {
restrict: 'E',
templateUrl: 'path/to/view.html',
replace: true,
controller: function ($scope, $timeout, $filter, TitleList, ngTableParams) {
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
sorting: {
title: 'asc' // initial sorting
}
}, {
total: 0, // length of data
getData: function ($defer, params) {
TitleList.get({}, function (data) {
var orderedData = params.sorting() ?
$filter('orderBy')(data, params.orderBy()) :
data;
params.total(orderedData.length);
orderedData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
$defer.resolve(orderedData);
});
}
});
}
};
. Soluzione
Il problema non è ancora chiaro per me tuttavia, gli esempi di NGTABLE utilizzano v0.3.1 e uso v0.3.2.Il problema è stato risolto iniziando a utilizzare la versione precedente.
Altri suggerimenti
Ho avuto anche questo problema, potrebbero esserci alcuni bug in v0.3.2
Ho risolto questo rimuovendo la riga 502 nel codice NG-Table con questa linea:
var sortingParams = (event && (event.ctrlKey || event.metaKey)) ? $scope.params.sorting() : {};
.
Non sono sicuro che questa sia la correzione giusta (non è sicuro del perché "evento" non fosse definito) ma ha risolto il problema per me.Quindi per favore non prenderlo come soluzione adeguata, è solo la mia 2 pence.
Ho avuto questo problema, è stato un problema di formato di risposta.
Il problema era perché, stavo restituendo un oggetto invece di un array, ex:
Bad Format:
{
"data": {
"items": {
"0": {
"post_id": "26",
"post_date": "2015-06-24 00:00:00"
.
Buono formato:
{
"data": {
"items": [
{
"id": "26",
"create_date": "2015-02-19 14:15:44",
.
La tabella funziona anche con un oggetto, ma non tutte le funzioni.