zoukankan      html  css  js  c++  java
  • ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项

    首先下拉刷新的代码是这样的,标红的地方为关键代码

    <html>
        <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
        <title>菜鸟教程(runoob.com)</title>
        <link href="http://www.runoob.com/static/ionic/css/ionic.min.css" rel="stylesheet">
        <script src="http://www.runoob.com/static/ionic/js/ionic.bundle.min.js"></script>
        <script type="text/javascript">
         angular.module('starter', ['ionic'])
    
          .run(function($ionicPlatform) {
            $ionicPlatform.ready(function() {
              // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
              // for form inputs)
              if(window.cordova && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
              }
              if(window.StatusBar) {
                StatusBar.styleDefault();
              }
            });
          })
    
          .controller( 'actionsheetCtl',['$scope','$timeout' ,'$http',function($scope,$timeout,$http){
    
              $scope.items=[
                  {
                      "name":"HTML5"
                  },
                  {
                      "name":"JavaScript"
                  },
                  {
                      "name":"Css3"
                  }
              ];
    
              $scope.doRefresh = function() {
                  $http.get('http://www.runoob.com/try/demo_source/item.json')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {
                          $scope.items = newItems;
                      })
                      .finally(function() {
                          $scope.$broadcast('scroll.refreshComplete');
                      });
              };
          }])
        </script>
        </head>
        <body ng-app="starter" ng-controller="actionsheetCtl" >
    
            <ion-pane>
                <ion-content >
                    <ion-refresher pulling-text="下拉刷新" on-refresh="doRefresh()"></ion-refresher>
                    <ion-list>
                        <ion-item ng-repeat="item in items" ng-bind="item.name"></ion-item>
                    </ion-list>
                </ion-content>
            </ion-pane>
        </body>
    </html>

    默认打开页面是这样的

     /****************页面载入方法************************/
            $http.get(findUrl+'?class=goods&name='+name+'&page=1')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {
                          $scope.items = newItems.content;
                      })
                      .finally(function() {
                          $scope.$broadcast('scroll.refreshComplete');
                      });
    <ion-list>
        <div class="content   ionic-pseudo card" ng-repeat="item in items"  >

    上拉加载更多可以模仿下拉刷新写

    首先在</ion-list>下及</ion-content>上(不一定非得是</ion-list>,这里是放在列表最下方的意思)上放置代码

    。。。。。
    
                </ion-list>
                    <ion-infinite-scroll ng-if="!noMorePage" immediate-check="false" on-infinite="loadMore()" distance="1%" ></ion-infinite-scroll>       
            </ion-content>
        </body>
    </html>

    immediate-check="false"是实验了很多次后来加上的,具体见:http://feifei.im/archives/276

    然后是js代码部分

    $scope.currentPage=1;//定义下拉加载分页的初始值
    
    $scope.loadMore=function(){
        
        var start = $scope.start;
        var goods = $scope.goods;
        var now_city = $scope.now_city;
        $scope.currentPage += 1;//每当滚动到底部,页码累计加1
    
        $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&page='+$scope.currentPage)   //注意改为自己本站的地址,不然会有跨域问题
            .success(function(newItems) {      
                for (var i=0;i<newItems.content.length;i++){//newItems.content.length,当前json的数量
                    $scope.items.push(newItems.content[i]);//一个一个取出来,推送到原来的items里
                }
                if (newItems.content.length < 10) {//当json的数量小于10(已经确定了一页为10条数据),说明页面到底了
                    $scope.noMorePage=true;//禁止滚动触发时间
                } 
                $scope.$broadcast('scroll.infiniteScrollComplete');        
            })
    };

    $scope.currentPage这个值会一直跑,一直累计加1,当你刷新页面后,这就会是个bug,所以,在下拉刷新代码里添加了

    $scope.currentPage=1;
    $scope.noMorePage=false;

    还原代码

    <html >
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
            <title>app</title>
            <link href="css/ionic.min.css" rel="stylesheet">
            <script src="js/ionic.bundle.min.js"></script>        
            <script src="js/config.js"></script>
            
            <script type="text/javascript">
    
        var app = angular.module( 'starter', ['ionic'] ).config( [
        '$compileProvider',
        function( $compileProvider )
        {   
            $compileProvider.aHrefSanitizationWhitelist(/^s*(https?|ftp|mailto|tel|file|sms):/);
            // Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
        }])
    
    
          .controller( 'actionsheetCtl',['$scope','$location','$timeout' ,'$http',function($scope,$location,$timeout,$http){
          
            
            
            
            //$scope.PageIndex = 1; 
            $scope.currentPage=1;
            //$scope.noMorePage=false;
            
            $scope.domain = url;
            var name =  $location.search().name;
            
            
             /****************页面载入方法************************/
            $http.get(findUrl+'?class=goods&name='+name+'&page=1')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {
                          $scope.items = newItems.content;
                      })
                      .finally(function() {
                          $scope.$broadcast('scroll.refreshComplete');
                      });
    
                      
              /****************刷新方法************************/
              $scope.doRefresh = function() {
             //alert($scope.currentPage);
             $scope.currentPage=1;
            $scope.noMorePage=false;
             
              //console.log($scope.PageIndex);
              var start = $scope.start;
              var goods = $scope.goods;
              var now_city = $scope.now_city;
                  $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&name='+name+'&page=1')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {      
                          $scope.items = newItems.content;
                      })
                      .finally(function() {
                          $scope.$broadcast('scroll.refreshComplete');
                           
                      });
              };
        
            /*
            function a(){
                var i = 2;
                function b(){
                    //alert(i++);
                    var page = i++;
                    return page;
                }
                return b;
            }
            var c = a();
            */
        
        
    
            /****************加载方法************************/
            
            
            $scope.loadMore=function(){
            var start = $scope.start;
            var goods = $scope.goods;
            var now_city = $scope.now_city;
            //var p = c();    
            
             
            //$scope.PageIndex++;  
            $scope.currentPage += 1;
            //console.log($scope.currentPage);
            
                $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&page='+$scope.currentPage)   //注意改为自己本站的地址,不然会有跨域问题
                .success(function(newItems) {      
                        //$scope.items.push(newItems.content);
                        //console.log($scope.items);
                        //var objs =[{a:1},{a:2}];
                        //angular.forEach(newItems.content, function(data,index,array){
                        //data等价于array[index]
                            console.log(newItems.content.length);
                            
                            
                            for (var i=0;i<newItems.content.length;i++)
                            {
                                $scope.items.push(newItems.content[i]);
                            }
                            
                            if (newItems.content.length < 10) {
                                $scope.noMorePage=true;
                            } 
                            
                            
                        //});    
                        
                        
                        $scope.$broadcast('scroll.infiniteScrollComplete');
                        
                })
    
                    
            //$scope.havaMore=false;
            };
              
            
            
              
              
              
              
          }])
          
          
          
          
          
          
          
          
          
          
          
        </script>
            
            
            
            <style>
            body,input,h2{
            font-family:Microsoft YaHei;
            }
            .icon{
            color: #808080;
        list-style-type: none;
        
        font-size: 2em;
            }
            .price{
                border-radius: 5px;
        background: red;
        color: white;
        font-size: 0.9em;
        padding-top:0.2em;
            }
            a{
    text-decoration:none;
    color:black;
    }
            </style>
            
        </head>
        
        
        <body ng-app="starter"  >
    
    
             <ion-content ng-controller="actionsheetCtl" >
                    <ion-refresher pulling-text="下拉刷新" on-refresh="doRefresh()"></ion-refresher>
             
                   
                   
    
               
                   
                   
          
           <div class="row">
               
                  <div class="col col-25">
                            <div class="col-demo">
                            
                            <div class="item item-input ">
                         <input type="text" placeholder="地址" ng-model="start">
                      </div>
                            
                            </div>
                  </div>
                  
                 <!--  <div class="col col-10">
                        <center><li class="ion-arrow-swap icon" style="margin-top: 40%;" ></li></center>
                   </div>-->
                  
                  <div class="col col-25">
                            <div class="col-demo">
                            
                            <div class="item item-input ">
                         <input type="text" placeholder="产品" ng-model="goods" >
                      </div>
                            
                            </div>
                  </div> 
                  
                  
                  
                  
                   <div class="col col-30">
                   
                   
                   
                   
                   <label class="item item-input item-select">
              
              
              <div class="input-label">
          种类
        </div>
              
              <select  ng-model="now_city">
              <option value ="">全部</option>
      <option value ="蔬菜">蔬菜</option>
      <option value ="果品">果品</option>
      <option value="粮油">粮油</option>
      <option value="水产品">水产品</option>
      <option value="畜产品">畜产品</option>
    </select>
     
            </label>
                   
                   
                   
                        
                  </div> 
                  
                  
                  
                  
                  
                  
                  
                  
                  
                        <button class="ion-search icon button button-icon" ng-click="doRefresh()"></button>
                  
                  
        </div>
          
          
          
          
            <ion-list>
                     
                         <div class="content   ionic-pseudo card" ng-repeat="item in items"  >
    
                      <div class="list list-inset">
    
                        <div class="item item-thumbnail-left">
                          <img src="{{domain}}/upload/{{item.pic}}.png">
                          
                          
                           <div class="row">
                            <div class="col"> <h2>{{item.goods}}</h2></div>
                            <div class="col"> <div class="price"><center>¥{{item.price}}</center></div>
                            
                            </div>
                           </div>
                          
                         
                         <h2 >发布日期:{{item.date}}</h2>
                         <h2 >供货地址:{{item.start}}</h2>
                         
                         
                        </div>
    
                        <div class="item">
                           <div class="row">
                            <div class="col"> <center style="color:#F0AB4B">发布人:{{item.name}}</center></div>
                            <div class="col"> <center style="color:#97D152">种类:{{item.now_city}}</center></div>
                           </div> 
                        </div>
                        
                        
                        
                        
                        
                        
                        
    
                        <div class="item">
                         <div class="row" >
                            <div class="col" style="border-right:1px solid #F0EFF1"> 
                        
                <center>
                        <h2 style="color:#0779FF;
                        font-weight:bold;"><a href="tel:{{item.phone1}}">给TA打电话</a></h2>
                        </center>
                        
                        </div>
                            <div class="col"> 
                    <center>        
                            <h2 style="color:#0779FF;
                        font-weight:bold;"><a ng-href="sms:{{item.phone1}}">给TA发短信</a></h2>
                        </center>
                        
                        </div>
                           </div>
                        </div>
    
                      
    
                      </div>
    
                   
                      </div>
                      
            
                        
            </ion-list>
            
            <ion-infinite-scroll ng-if="!noMorePage" immediate-check="false" on-infinite="loadMore()" distance="1%" ></ion-infinite-scroll> 
    
          
        </ion-content>
    
        
      </body>
    </html>

     改版2(修复查询bug)

    <html >
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
            <title>app</title>
            <link href="css/ionic.min.css" rel="stylesheet">
            <script src="js/ionic.bundle.min.js"></script>        
            <script src="js/config.js"></script>
            
            <script type="text/javascript">
    
        var app = angular.module( 'starter', ['ionic'] ).config( [
        '$compileProvider',
        function( $compileProvider )
        {   
            $compileProvider.aHrefSanitizationWhitelist(/^s*(https?|ftp|mailto|tel|file|sms):/);
            // Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
        }])
    
    
          .controller( 'actionsheetCtl',['$scope','$location','$timeout' ,'$http',function($scope,$location,$timeout,$http){
          
            
            
            
            //$scope.PageIndex = 1; 
            $scope.currentPage=1;
            //$scope.noMorePage=false;
            
            $scope.domain = url;
            var name =  $location.search().name;
            
            
             /****************页面载入方法************************/
            $http.get(findUrl+'?class=goods&name='+name+'&page=1')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {
                          $scope.items = newItems.content;
                      })
                      
    
                      
              /****************刷新方法************************/
              $scope.doRefresh = function() {
             //alert($scope.currentPage);
            $scope.currentPage=1;
            $scope.noMorePage=false;
             
              //console.log($scope.PageIndex);
              var start = $scope.start;
              var goods = $scope.goods;
              var now_city = $scope.now_city;
              
                  $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&name='+name+'&page=1')   //注意改为自己本站的地址,不然会有跨域问题
                      .success(function(newItems) {      
                          $scope.items = newItems.content;
                      })
                      
                          $scope.$broadcast('scroll.refreshComplete');
                           
                     
              };
        
            /*
            function a(){
                var i = 2;
                function b(){
                    //alert(i++);
                    var page = i++;
                    return page;
                }
                return b;
            }
            var c = a();
            */
            
            
            /*************查询方法*************/
            $scope.doSearch = function() {
                var start = $scope.start;
                var goods = $scope.goods;
                var now_city = $scope.now_city;
                
                $scope.currentPage=1;
                $scope.noMorePage=false;
                
                
                //alert(start);
                $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&name='+name+'&page=1')
                .success(function(newItems) {
                    console.log(newItems.content);
                    //newItems.content;
                    $scope.items = newItems.content;
                    
                    
                })
                //$scope.$broadcast('scroll.infiniteScrollComplete');
            };
        
        
        
        
        
    
            /****************加载方法************************/
            
            
            $scope.loadMore=function(){
            var start = $scope.start;
            var goods = $scope.goods;
            var now_city = $scope.now_city;
            //var p = c();    
            
             
            //$scope.PageIndex++;  
            $scope.currentPage += 1;
            //console.log($scope.currentPage);
            
                $http.get(findUrl+'?class=goods&start='+start+'&goods='+goods+'&now_city='+now_city+'&name='+name+'&page='+$scope.currentPage)   //注意改为自己本站的地址,不然会有跨域问题
                .success(function(newItems) {      
                        //$scope.items.push(newItems.content);
                        //console.log($scope.items);
                        //var objs =[{a:1},{a:2}];
                        //angular.forEach(newItems.content, function(data,index,array){
                        //data等价于array[index]
                            //console.log(newItems.content);
                            
                            if ( newItems.content == null){
                                $scope.noMorePage=true;
                            }
                            
                            var length = newItems.content.length;
                            
                            for (var i=0;i<length;i++)
                            {
                                $scope.items.push(newItems.content[i]);
                            }
                            
                            
                            
                            if (newItems.content.length < 10) {
                                $scope.noMorePage=true;
                            } 
                            
                            
                            
                            
                        //});    
                        
                        
                        $scope.$broadcast('scroll.infiniteScrollComplete');
                        
                })
    
                    
            //$scope.havaMore=false;
            };
              
            
            
              
              
              
              
          }])
          
          
          
          
          
          
          
          
          
          
          
        </script>
            
            
            
            <style>
            body,input,h2{
            font-family:Microsoft YaHei;
            }
            .icon{
            color: #808080;
        list-style-type: none;
        
        font-size: 2em;
            }
            .price{
                border-radius: 5px;
        background: red;
        color: white;
        font-size: 0.9em;
        padding-top:0.2em;
            }
            a{
    text-decoration:none;
    color:black;
    }
            </style>
            
        </head>
        
        
        <body ng-app="starter"  >
    
    
             <ion-content ng-controller="actionsheetCtl" >
                    <ion-refresher pulling-text="下拉刷新" on-refresh="doRefresh()"></ion-refresher>
             
                   
                   
    
               
                   
                   
          
           <div class="row">
               
                  <div class="col col-25">
                            <div class="col-demo">
                            
                            <div class="item item-input ">
                         <input type="text" placeholder="地址" ng-model="start">
                      </div>
                            
                            </div>
                  </div>
                  
                 <!--  <div class="col col-10">
                        <center><li class="ion-arrow-swap icon" style="margin-top: 40%;" ></li></center>
                   </div>-->
                  
                  <div class="col col-25">
                            <div class="col-demo">
                            
                            <div class="item item-input ">
                         <input type="text" placeholder="产品" ng-model="goods" >
                      </div>
                            
                            </div>
                  </div> 
                  
                  
                  
                  
                   <div class="col col-30">
                   
                   
                   
                   
                   <label class="item item-input item-select">
              
              
              <div class="input-label">
          种类
        </div>
              
              <select  ng-model="now_city">
              <option value ="">全部</option>
      <option value ="蔬菜">蔬菜</option>
      <option value ="果品">果品</option>
      <option value="粮油">粮油</option>
      <option value="水产品">水产品</option>
      <option value="畜产品">畜产品</option>
    </select>
     
            </label>
                   
                   
                   
                        
                  </div> 
                  
                  
                  
                  
                  
                  
                  
                  
                  
                        <button class="ion-search icon button button-icon" ng-click="doSearch()"></button>
                  
                  
        </div>
          
          
          
          
            <ion-list>
                     
                         <div class="content   ionic-pseudo card" ng-repeat="item in items"  >
    
                      <div class="list list-inset">
    
                        <div class="item item-thumbnail-left">
                          <img src="{{domain}}/upload/{{item.pic}}.png">
                          
                          
                           <div class="row">
                            <div class="col"> <h2>{{item.goods}}</h2></div>
                            <div class="col"> <div class="price"><center>¥{{item.price}}</center></div>
                            
                            </div>
                           </div>
                          
                         
                         <h2 >发布日期:{{item.date}}</h2>
                         <h2 >供货地址:{{item.start}}</h2>
                         
                         
                        </div>
    
                        <div class="item">
                           <div class="row">
                            <div class="col"> <center style="color:#F0AB4B">发布人:{{item.name}}</center></div>
                            <div class="col"> <center style="color:#97D152">种类:{{item.now_city}}</center></div>
                           </div> 
                        </div>
                        
                        
                        
                        
                        
                        
                        
    
                        <div class="item">
                         <div class="row" >
                            <div class="col" style="border-right:1px solid #F0EFF1"> 
                        
                <center>
                        <h2 style="color:#0779FF;
                        font-weight:bold;"><a href="tel:{{item.phone1}}">给TA打电话</a></h2>
                        </center>
                        
                        </div>
                            <div class="col"> 
                    <center>        
                            <h2 style="color:#0779FF;
                        font-weight:bold;"><a ng-href="sms:{{item.phone1}}">给TA发短信</a></h2>
                        </center>
                        
                        </div>
                           </div>
                        </div>
    
                      
    
                      </div>
    
                   
                      </div>
                      
            
                        
            </ion-list>
            
            <ion-infinite-scroll ng-if="!noMorePage" immediate-check="false" on-infinite="loadMore()" distance="1%" ></ion-infinite-scroll> 
    
          
        </ion-content>
    
        
      </body>
    </html>
  • 相关阅读:
    Stanford机器学习笔记-10. 降维(Dimensionality Reduction)
    Stanford机器学习笔记-9. 聚类(K-means算法)
    Stanford机器学习笔记-8. 支持向量机(SVMs)概述
    Stanford机器学习笔记-7. Machine Learning System Design
    Stanford机器学习笔记-6. 学习模型的评估和选择
    Stanford机器学习笔记-5.神经网络Neural Networks (part two)
    k sum 问题系列
    正则表达式
    Manacher算法--O(n)回文子串算法
    leetcode难度及面试频率
  • 原文地址:https://www.cnblogs.com/hellowzd/p/6000385.html
Copyright © 2011-2022 走看看