هناك دائمًا مشكلة في المشروع: بعد إدخال الكلمات الرئيسية في شريط البحث (انظر الشكل 1) ، وفقًا لمنطق الأعمال المعمول به ، يجب أن يكون ذلك بعد استلام الخادم الطلب ، سيعود أولاً 7 قطع من البيانات في الاستعلام. عندما يبدو أن العميل يتم تحميله ، تابع البحث عن 7 قطع أخرى من البيانات. لكن الوضع الفعلي غير مؤكد. على وحدة التحكم في الخادم (انظر الشكل 2) ، يمكنك رؤية Begno حتى 126 ، وهو ما يعادل العميل الذي يطلب 127 مرة للخادم ، وهو نتيجة لا تطاق.
الشكل 1 شريط بحث العميل
الشكل 2 وحدة تحكم الخادم
يمكن أن نستنتج أن هناك مشكلة في منطق عمل العميل. ارجع إلى العميل ، وعرض منطق الكود المصدر ، وقم بتعديله على النحو التالي:
وحدة تحكم
$ scope.medsearchmore = function () {console.log ("تحميل السحب ......" + isfinished) ؛ if (isfinished == 0) {start += pcnt ؛ var data = {"begno": start ، // number number "pagenum": pagenum ، // number per page "searchby": searchby} ؛ if (searchType == 1) {data.classid = searchKey ؛ console.log (data.classid) ؛ // ------- 1 appCallServer ($ http ، "9002" ، البيانات ، الدالة (البيانات) {console.log ("تنزل لتحديث نتائج الاستعلام rootscope.med:"+json.stringify (data.data)) ؛ لـ (var i = 0 ؛ تم الانتهاء من حالة التحديث. $ timeout (function () {$ ionicloading.hide () ؛} ، 1200) ؛ }} آخر {// تم الاستعلام عن الدواء $ scope.nomore = true ؛ } $ timeout (function () {$ scope. $ broadcast ('scroll.infinitescrollete') ؛} ، 1200) ؛ } ؛منظر
<!-عندما يصل المستخدم إلى تذييل أو بالقرب من تذييل التذييل ، يتيح لك توجيه Ion-Infinite-Scroll استدعاء وظيفة. عندما يسير المستخدم خارج المحتوى الموجود في الأسفل ، سيتم تشغيل المحدد المحدد-> <!-عندما لا يكون هناك تحميل بيانات مزيد من البيانات ، يمكنك استخدام طريقة بسيطة لمنع التمرير اللانهائي ، أي أن النقر على التصنيف ، لا تنقر على التصنيف ، <! on-Infinite = "medsearchmore ()" المسافة = "0.01 ٪" icon = "ion-loading-c"> </ion-infinite-scroll> <viv ng-if = "nomore" align = "center"> لا مزيد من الأدوية </p> </fiv>
بعد التعديلات أعلاه ، يمكن تجنب الطلبات غير الضرورية.