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);
                    });
                }
            });
        }
    };
.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top