Pregunta

Actualmente estoy trabajando en una tabla que requiere alguna clasificación.Dado que el proyecto está utilizando angular (v1.2.12), comencé a usar el ngtable módulo (v0.3.2).

La clasificación predeterminada es el título, pero el año también se puede usar como opción de clasificación.Cuando cargue la página, funciona bien, pero cuando hago clic en una tabla que encabeza la columna Haz clicked, pero la clasificación no se refleja en el encabezado, sino que también se establece el param de clasificación.

Cuando comienzo la depuración, veo que los params.sorting () devuelven: {título: indefinido} A partir de ese momento, también ya no es posible hacer clic en un encabezado sortable, simplemente no hacet haz nada más.

Creo que me estoy perdiendo algo, parece que no puedo encontrar lo que

Mis datos son los siguientes:

[{
    "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 es una directiva,

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

¿Fue útil?

Solución

Sin embargo, el problema aún no está claro para mí, los ejemplos de Uso Ngtable v0.3.1 y yo usamos v0.3.2.El problema se resolvió comenzando a usar la versión anterior.

Otros consejos

También he tenido este problema, podría haber algunos errores en v0.3.2

Fije este al reemplazar la línea 502 en el código de la tabla NG con esta línea:

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

No estoy seguro de que este es el arreglo correcto (no estoy seguro de por qué 'evento' no fue definido), pero lo solucionó el problema.Así que por favor, no tome esto como una solución adecuada, es solo mi 2 peniques.

He tenido este problema, fue un problema de formato de respuesta.
El problema fue porque, estaba devolviendo un objeto en lugar de una matriz, EX:

Formato malo:

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

buen formato:

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

La tabla también funciona con un objeto, pero no todas las funciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top