Ng-table: لا يعمل ترقيم الصفحات مع البيانات المخصصة من ملف json

تم إنشاؤها على ٢ أغسطس ٢٠١٦  ·  10تعليقات  ·  مصدر: esvit/ng-table

أنا أستخدم بيانات مخصصة من ملف .json وأريد ترقيم البيانات لكن جميع البيانات تأتي في صفحة واحدة ؛ لما ذلك؟ فيما يلي رمز بلدي

 $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>

التعليق الأكثر فائدة

حسنًا ، لقد أصلحته ، لأن dataOptions قد يكون undefined . لذلك يجب أن يكون الرمز

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

ال 10 كومينتر

هل أنت متأكد من أنه مرتبط بحقيقة أن مصدرك هو ملف JSON؟
أواجه نفس المشكلة ، على ما أعتقد ، على الرغم من أن مصدر البيانات الخاص بي هو خدمة.

تُرجع هذه الخدمة وعدًا وعندما يتم حلها ، قمت بتعيين params.total() ، كما هو موضح في الوثائق قبل إرجاع النتيجة ، ولكن لا يزال ترقيم الصفحات لا يعمل.

لدي نفس المشكلة ، عند الترحيل على بيانات المجموعة. لذلك ، أضفت هذه السطور في النهاية على وظيفة getGroups .

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

ترقيم الصفحات يعمل إما افتراضيًا أو مخصصًا.

نعم ، هذا هو نفس الحل الذي ذكرته في # 872 تقريبًا. لست متأكدًا مما إذا كان الاختيار settings.dataOptions.applyPaging مهمًا لأنه تم ضبطه يدويًا على خطأ بعض السطور أعلاه.

@ fsm3xpert ، tandibar ، قمت بتطبيق الحل الذي اقترحه @ fsm3xpert وهو يعمل ، لكني أحصل على ما يلي في وحدة التحكم الخاصة بي:

Possibly unhandled rejection: {}

أيه أفكار؟

حسنًا ، لقد أصلحته ، لأن dataOptions قد يكون undefined . لذلك يجب أن يكون الرمز

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

راجع للشغل ، الإصدار المستقبلي للجدول ng سيعني أن قيم الإعداد المتداخلة (على سبيل المثال
dataOptions) لن تكون أبدًا غير معرفة

يوم الأربعاء 21 كانون الأول (ديسمبر) 2016 الساعة 7:19 مساءً ، ماريا إينيس بارنيساري <
[email protected]> كتب:

حسنًا ، لقد أصلحته ، لأنه قد تكون خيارات dataOptions غير محددة. لذا فإن الكود
يجب ان يكون

if (settings.dataOptions &&! settings.dataOptions.applyPaging) {
إرجاع ngTableDefaultGetData (نتيجة ، معلمات) ،
}

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/esvit/ng-table/issues/893#issuecomment-268614815 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AA2HPk4I47xMpIlEbXSDSCMUu0mlGn7Vks5rKXu4gaJpZM4Jagxg
.

في حالة تعرض أي شخص لنفس المشكلة مثلي ، وهي أن تغيير رمز المكتبة ليس خيارًا لأي سبب من الأسباب ، فقد وجدت حلاً:

يبدو أن المشكلة هي أن التجميع ببساطة لا يتم تنفيذه للتعامل مع البيانات المقسمة إلى صفحات. ما انتهى بي الأمر هو استرداد بياناتي للصفحة المطلوبة وتخزين العدد الإجمالي للعناصر في متغير مؤقتًا.
actualTotal = params.total()
ثم قمت بتنفيذ اعتراض استجابة كما هو موضح في http://ng-table.com/#/global -customization / demo-response-interceptors. هناك يمكنني إعادة تعيين القيمة الإجمالية إلى القيمة المخزنة مؤقتًا. يعمل هذا على إصلاح عرض الترحيل.

هناك مشكلة واحدة متبقية ، وهي أنه إذا حاول المستخدم الانتقال إلى صفحة أخرى غير 1 فلن ترى أي شيء لأن شرائح التجميع مصفوفة البيانات مع هذا الرمز:
var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count());
الحل البسيط لهذا هو أيضًا تعيين الصفحة على 1 في وظيفة getData بمجرد استرداد البيانات ، وتخزين الصفحة الفعلية مؤقتًا وإعادة تعيينها في المعترض.

بعد تطبيق الإصلاح المقترح ، توقفت التصفية عن العمل بالنسبة لي. لإصلاحه ، في الأسطر أعلاه ، كان علي تعيين dataOptions كما يلي:

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

هل هذا الإصلاح متوفر في أحدث إصدار؟ إن لم يكن في أي سطر يجب إضافته.

إنه غير متوفر في الإصدار الأخير.
لقد نجحت في تعديل هذا القسم من التعليمات البرمجية:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
return ngTableDefaultGetData.applyPaging(result, params);

مع هذا:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
إذا (sortDirection) { var orderByFn = ngTableDefaultGetData.getOrderByFn () ؛ var orderBy = util_1.convertSortToOrderBy ({ value: sortDirection }) ؛ نتيجة = orderByFn (نتيجة ، ترتيب حسب) ؛ } if (! settings.dataOptions.applyPaging) { return ngTableDefaultGetData (result، params)؛ } إرجاع ngTableDefaultGetData.applyPaging (نتيجة ، معلمات) ؛ `

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

yujiayinshi picture yujiayinshi  ·  8تعليقات

alienriquebm picture alienriquebm  ·  6تعليقات

esvit picture esvit  ·  37تعليقات

wayjake picture wayjake  ·  6تعليقات

faceleg picture faceleg  ·  11تعليقات