มีปัญหาอยู่เสมอในโครงการ: หลังจากป้อนคำหลักในแถบค้นหา (ดูรูปที่ 1) ตามตรรกะทางธุรกิจที่กำหนดไว้ควรเป็นเพราะเซิร์ฟเวอร์ได้รับคำขอแล้วมันจะส่งคืนข้อมูล 7 ชิ้นแรกในแบบสอบถามก่อน เมื่อไคลเอนต์ดูเหมือนจะโหลดขึ้นให้ค้นหาข้อมูลอีก 7 ชิ้นต่อไป แต่สถานการณ์จริงไม่แน่นอน บนคอนโซลเซิร์ฟเวอร์ (ดูรูปที่ 2) คุณสามารถดู Begno จนถึง 126 ซึ่งเทียบเท่ากับไคลเอนต์ที่ร้องขอ 127 ครั้งไปยังเซิร์ฟเวอร์ซึ่งเป็นผลลัพธ์ที่ทนไม่ได้
รูปที่ 1 แถบค้นหาไคลเอนต์
รูปที่ 2 คอนโซลเซิร์ฟเวอร์
สามารถสรุปได้ว่ามีปัญหากับตรรกะทางธุรกิจของลูกค้า กลับไปที่ไคลเอนต์ดูตรรกะซอร์สโค้ดและแก้ไขดังนี้:
ผู้ควบคุม
$ scope.medsearchmore = function () {console.log ("โหลดแบบดึงขึ้น ...... " + isfinished); if (isfinished == 0) {เริ่มต้น += pcnt; var data = {"Begno": เริ่มต้น, // เริ่มหมายเลข "pagenum": pagenum, // หมายเลขส่งคืนต่อหน้า "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; i <data.pcnt; // สถานะการอัปเดตเสร็จสิ้นด้วยข้อมูลที่น่าพอใจ; $ timeout (function () {$ ionicloading.hide ();}, 1200); }} else {// ยาได้รับการสอบถาม $ scope.nomore = true; } $ timeout (function () {$ scope. $ broadcast ('scroll.infinitescrollcomplete');}, 1200); -ดู
<!-เมื่อผู้ใช้มาถึงส่วนท้ายหรือใกล้กับส่วนท้ายคำสั่ง Ion-Infinite-Scroll ช่วยให้คุณเรียกฟังก์ชั่น เมื่อผู้ใช้เลื่อนเกินเนื้อหาที่อยู่ด้านล่างการระบุบนไม่มีการกำหนดจะถูกเรียกใช้-> <!-เมื่อไม่มีการโหลดข้อมูลอีกต่อไปคุณสามารถใช้วิธีง่ายๆเพื่อป้องกันการเลื่อนแบบไม่มีที่สิ้นสุด on-infinite = "medsearchmore ()" ระยะทาง = "0.01%" ไอคอน = "ion-loading-c"> </ion-infinite-scroll> <div ng-if = "nomore" allign = "center"> <p>
หลังจากการแก้ไขข้างต้นสามารถหลีกเลี่ยงคำขอที่ไม่จำเป็นได้