Ng-table: pagination tidak berfungsi dengan data khusus dari file json

Dibuat pada 2 Agu 2016  ·  10Komentar  ·  Sumber: esvit/ng-table

Saya menggunakan data khusus dari file .json dan ingin membuat paginasi data tetapi semua data datang dalam satu halaman; kenapa begitu? di bawah ini adalah kode saya

 $http.get('app/user_keys.json').success(function(data) {
            vm.data = data;
            vm.tableParams = new NgTableParams({ page: 1, count: 2 }, {
                    total: vm.data.length,
                    getData: function (params) {
                        console.log(vm.data.length);
                        var deferred = $q.defer();
                        var orderedData = params.sorting() ? $filter('orderBy')(vm.data, params.orderBy()) : vm.data;
                        deferred.resolve(orderedData.slice((params.page() - 1) * params.count(),  params.page() * params.count()));
                    }
                });
        });
<table ng-table="vm.tableParams" class="table table-striped" >
                    <colgroup>
                          <col width="5%"/>
                          <col width="30%"/>
                          <col width="50%"/>
                          <col width="15%"/>
                    </colgroup>
                    <tr ng-repeat="row in vm.data | filter: searchText  track by $index">
                        <td header="'headerCheckbox.html'">
                        <input type="checkbox" value="row._id" ng-model="vm.checkboxes.items[row._id]" ></td>
                        <td data-title="'ID'">{{ row.index }}</td>
                        <td data-title="'Cloud Location'">{{ row.location }}</td>
                        <td data-title="'Action'"><i class="fa fa-trash"></i></td>
                    </tr>
                </table>

Komentar yang paling membantu

Ok saya perbaiki, itu karena dataOptions mungkin undefined . Jadi kodenya harus

 if (settings.dataOptions && !settings.dataOptions.applyPaging) {
   return ngTableDefaultGetData(result, params);
 }

Semua 10 komentar

Apakah Anda yakin itu terkait dengan fakta bahwa sumber Anda adalah file JSON?
Saya mengalami masalah yang sama, saya pikir, meskipun sumber data saya adalah layanan.

Layanan itu mengembalikan janji dan ketika diselesaikan, saya menetapkan params.total() , seperti yang dijelaskan dalam dokumentasi sebelum mengembalikan hasilnya, tetapi pagination masih tidak berfungsi.

Saya memiliki masalah yang sama, saat melakukan paging pada data grup. Jadi, saya menambahkan baris ini di akhir fungsi getGroups .

if (!settings.dataOptions.applyPaging) {
    return ngTableDefaultGetData(result, params);
}
return ngTableDefaultGetData.applyPaging(result, params);

Penomoran halaman bekerja pada default atau kustom yang digunakan.

Ya, ini hampir sama dengan solusi yang saya sebutkan di #872. Saya tidak yakin apakah pemeriksaan settings.dataOptions.applyPaging penting karena secara manual disetel ke false beberapa baris di atas.

@fsm3xpert , @tandibar , saya menerapkan solusi yang diusulkan oleh @fsm3xpert dan berhasil, tetapi saya mendapatkan yang berikut di konsol saya:

Possibly unhandled rejection: {}

Ada ide?

Ok saya perbaiki, itu karena dataOptions mungkin undefined . Jadi kodenya harus

 if (settings.dataOptions && !settings.dataOptions.applyPaging) {
   return ngTableDefaultGetData(result, params);
 }

BTW, rilis ng-table di masa mendatang akan berarti bahwa nilai pengaturan bersarang (EG
dataOptions) tidak akan pernah terdefinisi

Pada Rab, 21 Des 2016 jam 19:19, María Inés Parnisari <
[email protected]> menulis:

Ok saya perbaiki, itu karena dataOptions mungkin tidak terdefinisi. Jadi kodenya
seharusnya

if (settings.dataOptions && !settings.dataOptions.applyPaging) {
kembalikan ngTableDefaultGetData(hasil, params);
}


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/esvit/ng-table/issues/893#issuecomment-268614815 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/AA2HPk4I47xMpIlEbXSDSCMUu0mlGn7Vks5rKXu4gaJpZM4Jagxg
.

jika ada yang memiliki masalah yang sama seperti saya, yaitu mengubah kode perpustakaan bukanlah pilihan karena alasan apa pun, saya menemukan solusi:

Masalahnya tampaknya pengelompokan tidak diterapkan untuk menangani data halaman. Apa yang akhirnya saya lakukan adalah mengambil data saya untuk halaman yang diinginkan dan menyimpan jumlah total item dalam suatu variabel.
actualTotal = params.total()
Saya kemudian menerapkan pencegat respons seperti yang dijelaskan dalam http://ng-table.com/#/global -customization/demo-response-interceptors . Di sana saya dapat mengatur nilai total kembali ke nilai yang di-cache. Ini memperbaiki tampilan paging.

Ada satu masalah yang tersisa, yaitu jika pengguna mencoba membuka halaman lain selain 1, Anda tidak akan melihat apa pun saat pengelompokan memotong larik data dengan kode ini:
var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count());
Solusi sederhana untuk ini juga adalah menyetel halaman ke 1 di fungsi getData setelah Anda mengambil data, menyimpan halaman yang sebenarnya, dan menyetel ulang di pencegat.

Setelah menerapkan perbaikan yang disarankan, pemfilteran berhenti berfungsi untuk saya. Untuk memperbaikinya, pada baris di atas, saya harus mengatur dataOptions seperti:

settings.dataOptions = { applyPaging: false, applyFilter: false };

apakah perbaikan ini tersedia dalam versi terbaru? jika tidak di baris mana itu perlu ditambahkan.

Ini tidak tersedia di versi terakhir.
Saya berhasil memodifikasi bagian kode ini:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
return ngTableDefaultGetData.applyPaging(result, params);

dengan ini:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
if (sortDirection) { var orderByFn = ngTableDefaultGetData.getOrderByFn(); var orderBy = util_1.convertSortToOrderBy({ nilai: sortDirection }); hasil = orderByFn(hasil, orderBy); } if (!settings.dataOptions.applyPaging) { return ngTableDefaultGetData(result, params); } return ngTableDefaultGetData.applyPaging(result, params);`

Apakah halaman ini membantu?
0 / 5 - 0 peringkat