Question

Je travaille actuellement sur une table nécessitant un tri.Étant donné que le projet utilise angulaire (V1.2.12), j'ai commencé à utiliser le module ngtable (V0.3.2).

Le tri par défaut est le titre mais l'année peut également être utilisée comme option de tri.Lorsque je charge la page, cela fonctionne bien, mais lorsque je clique sur une table en-tête de la colonne cliquée est triée, mais le tri n'est pas reflété dans l'en-tête, le paramètre de tri n'est plus défini.

Lorsque je commence à déboguer, je vois que les param) renvoie: {Titre: non défini} à partir de ce moment où il n'est pas plus possible de cliquer sur une en-tête de tri, elle ne fait queT faire n'importe quoi plus.

Je pense que je manque quelque chose, je ne peux pas sembler trouver cependant que

Mes données sont les suivantes:

[{
    "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 vue:

<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 vue est une directive,

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

Était-ce utile?

La solution

Le problème n'est pas encore clair pour moi, cependant, les exemples de NgTable utilisent V0.3.1 et j'utilise V0.3.2.La question a été résolue en commençant à utiliser la version plus ancienne.

Autres conseils

J'ai aussi eu cette question, il pourrait y avoir des bugs dans V0.3.2

J'ai corrigé celui-ci en remplaçant la ligne 502 dans le code de table NG avec cette ligne:

var sortingParams = (event && (event.ctrlKey || event.metaKey)) ? $scope.params.sorting() : {};

Je ne suis pas sûr que ce soit le bon correctif (pas sûr de savoir pourquoi "événement" indéfini) mais cela a résolu le problème pour moi.Alors s'il vous plaît ne prenez pas cela comme une solution appropriée, c'est juste ma 2 pence.

J'ai eu cette question, c'était un problème de format de réponse.
Le problème était parce que, je retourne un objet au lieu d'un tableau, ex:

mauvais format:

{
"data": {
    "items": { 
        "0": {
            "post_id": "26",
            "post_date": "2015-06-24 00:00:00"

Bon format:

{
"data": {
    "items": [
        {
            "id": "26",
            "create_date": "2015-02-19 14:15:44",

Le tableau fonctionne aussi avec un objet, mais pas toutes les fonctions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top