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
- ssh登入慢問題解決方法
- 04-上拉載入更多
- react+antdm上拉載入React
- vue-router懶載入速度緩慢問題及解決方法Vue
- Hibernate Lazy 載入問題的解決
- mui上拉載入更多的使用UI
- vue上拉載入更多元件Vue元件
- 上拉重新整理,下拉載入
- 覆盤 PHP 經典面試問題解決過程:上臺階問題PHP面試
- 重複登入問題最終解決方法
- 為RecyclerView新增分頁載入(上拉載入更多)功能View
- Flutter——下拉重新整理,上拉載入Flutter
- uni-app實現上拉載入APP
- SERVICE問題解決方法
- 解決ionic 2載入速度慢的問題
- 【ubuntu】解決行動硬碟掛載不上的問題Ubuntu硬碟
- php原生上拉載入,點選載入更多(jQuery,ajax,mysql)PHPjQueryMySql
- mysql登入遇到ERROR 1045問題解決方法MySqlError
- 載入自定義擴充套件包報錯連結不上的問題解決套件
- gitbook 入門教程之解決windows熱載入失敗問題GitWindows
- C++二進位制相容問題及解決方法C++
- 你必須瞭解的RecyclerView的五大開源專案-解決上拉載入、下拉重新整理和新增Header、Footer等問題ViewHeader
- flutter - listView 下拉重新整理 上拉載入FlutterView
- 上拉載入下拉重新整理瞭解下
- ListView分頁顯示 上拉載入更多View
- 自己動手寫RecyclerView的上拉載入View
- Hadoop使用常見問題以及解決方法(轉載)Hadoop
- listView懶載入解決快速拖動卡屏問題View
- 解決問題通用方法論
- As常見問題解決方法
- 遇到問題的解決方法
- "undefined reference to" 問題解決方法Undefined
- 問題解決方法有三
- Josephus問題解決方法一
- Josephus問題解決方法二
- $(function(){}裡面方法不載入問題Function
- Flutter 實現下拉重新整理&上拉載入Flutter