AngularJS進階(三十八)上拉載入問題解決方法
分享一下我老師大神的人工智慧教程!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
AngularJS上拉載入問題解決方法
專案中始終存在一個問題:當在搜尋欄輸入關鍵詞後(見圖1),按照既定的業務邏輯應該是服務端接收到請求後,首先返回查詢的前7條資料,待客戶端出現上拉載入時,繼續查詢另外7條資料。但實際情形是不確定的,在服務端控制檯(見圖2)可看到begno一直到了126,也就是相當於客戶端往服務端請求了127次,這是一個令人無法忍受的結果。
圖1 客戶端搜尋欄
圖2 服務端控制檯
可以斷定是客戶端的業務邏輯出現了問題。返回到客戶端,檢視原始碼邏輯,修改如下:
控制器
- $scope.medsearchMore = function() {
- console.log("上拉載入....." + isfinished);
- if (isfinished == 0) {
- begno += pcnt;
- var data = {
- "begno" : begno, // 起始序號
- "pagenum" : pagenum, // 每頁返回條數
- "searchby": searchby
- };
- if (searchType == 1) {
- data.classid = searchKey;
- console.log(data.classid); //--------1
- appCallServer($http, "9002", data, function(data) {
- console.log("下拉重新整理查詢結果rootScope.med:" + JSON.stringify(data.data));
- for (var i = 0; i < data.pcnt; i++) {
- $rootScope.med.push(data.data[i]);
- }
- // 更新狀態
- isfinished = data.isfinished;
- // 藥品已查詢完畢
- if(isfinished == '1'){
- $scope.noMore = true;
- }else{
- $scope.noMore = false;
- }
- pcnt = data.pcnt;
- }, function(data) {
- // 藥品已查詢完畢
- $scope.noMore = true;
- $ionicLoading.show({
- template: data.errtext
- });
- $timeout(function() {
- $ionicLoading.hide();
- }, 1200);
- });
- }
- } else {
- // 藥品已查詢完畢
- $scope.noMore = true;
- }
- $timeout(function() {
- $scope.$broadcast('scroll.infiniteScrollComplete');
- }, 1200);
- };
檢視
- <!--當使用者到達頁尾或頁尾附近時,ion-infinite-scroll指令允許你呼叫一個函式 。當使用者滾動的距離超出底部的內容時,就會觸發你指定的on-infinite-->
- <!--當沒有更多資料載入時,就可以用一個簡單的方法阻止無限滾動,那就是angular的ng-if指令-->
- <!--設定noMore初始值為true首次即點選分類查詢時不進行下拉載入操作-->
- <ion-infinite-scroll on-infinite="medsearchMore()" distance="0.01%" icon="ion-loading-c"></ion-infinite-scroll>
- <div class="item" ng-if="noMore" align="center"><p>沒有更多的藥品了</p></div>
經過以上修改,可以實現避免不必要的請求。
參考文獻
1.http://www.ionic.wang/js_doc-index-id-29.html
美文美圖
給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow
相關文章
- Flutter入門進階之旅(十五)ListView下拉重新整理&上拉載入更多FlutterView
- vue-router懶載入速度緩慢問題及解決方法Vue
- mysql登入遇到ERROR 1045問題解決方法MySqlError
- SERVICE問題解決方法
- 04-上拉載入更多
- 覆盤 PHP 經典面試問題解決過程:上臺階問題PHP面試
- 解決建立SpringBoot工程載入較慢的問題Spring Boot
- 【ubuntu】解決行動硬碟掛載不上的問題Ubuntu硬碟
- gitbook 入門教程之解決windows熱載入失敗問題GitWindows
- As常見問題解決方法
- 解決問題通用方法論
- 遇到問題的解決方法
- mui上拉載入更多的使用UI
- vue上拉載入更多元件Vue元件
- Gradio離線部署到內網,資源載入失敗問題(Gradio離線部署問題解決方法)內網
- 載入自定義擴充套件包報錯連結不上的問題解決套件
- $(function(){}裡面方法不載入問題Function
- Laravel 6 ignition 解決 Class 'xxx' not found 載入緩慢問題Laravel
- 解決 goland 載入 golang.org 包的網路問題GoLandGolang
- 利用 Arthas 解決啟動 StandbyNameNode 載入 EditLog 慢的問題
- but no encoding declared;問題的解決方法Encoding
- css高度塌陷問題解決方法CSS
- pyinstaller閃退問題解決方法
- uni-app實現上拉載入APP
- Flutter——下拉重新整理,上拉載入Flutter
- 關於angularjs的載入方式AngularJS
- php原生上拉載入,點選載入更多(jQuery,ajax,mysql)PHPjQueryMySql
- 過濾器解決檔案上傳下載跨域問題過濾器跨域
- 【ubuntu】解決行動硬碟掛載不上問題:wrong fs typeUbuntu硬碟
- 前端進階課程之跨域問題詳解前端跨域
- Cabloy-CMS:動靜結合,解決Hexo痛點問題(進階篇)Hexo
- 討論TableLayoutPanel載入緩慢和閃爍問題解決方案
- 快取穿透問題與解決方法快取穿透
- Nacos 常見問題及解決方法
- java中亂碼問題解決方法Java
- dedecms 後臺假死問題解決方法
- 上拉載入下拉重新整理瞭解下
- flutter - listView 下拉重新整理 上拉載入FlutterView