ionic-上拉刷新载入数据

时间:2022-06-14 22:59:42
<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <link rel="stylesheet" href="js/lib/ionic1/css/ionic.min.css">
    <script src="js/lib/ionic1/js/ionic.bundle.min.js"></script>
    <title>Title</title>
    <!--  由于移动端的特殊性  下拉刷新ion-refresher:移动端没有刷新的按钮~图标~可以操作的东西【浏览器的工具栏中有刷新的按钮】  下拉加载ion-infinite-scroll :移动端页面,显示的内容有限,优先加载显示用户能看到的内容部分,在用户拖动网页的过程中,【动态加载下面的内容;模拟了PC端的延迟加载】    问题:  问题0:实现下拉加载时,页头出现留白,什么原因?怎么解决?  原因:将下拉加载组件写在了内容的上边,导致预留的显示加载图标的位置留白了  解决:将下拉加载组件写在内容的下边  问题1:如果不添加$scope.$broadcast()广播,数据下拉加载,只加载一次。然后就木有然后了...  没有广播,信息数据不对称,第一次会默认加载  问题2:如果添加$scope.$broadcast()广播,数据下拉加载,会无限加载【出现错误】  错误并不是上拉加载控件的错误  模拟出现的错误:而是数据的错误。: ng-repeat,不能处理重复的数据,如果出现数据重复,就会出现处理错误   解决方案:通常情况下,页面中出现的展示的数据,谁也保证不了会又重复的数据  但是后端对于重复的数据进行了对象的封装处理,给每一条数据都进行了编号  {1, "hello"}  {2, "hello"}   问题3:ng-if指令,指定调用了函数moreDataCanbeLoaded(),数据的上拉加载失效   解决思路:  1.查看官方API文档,对文档中关于上拉加载的处理过程进行查看,尤其是文档中标注【注意】的地方  2.文档中,如果没有需要注意的地方,文档的代码中也没有相关的解决方案,仅仅是使用方式的描述  百度/谷歌搜索相关的代码,参考其他开发人员的解决方式,结合自己的需求进行处理  -->  </head>
<body ng-controller="myCtrl">
<!--页面头部--> <ion-header-bar class="bar-royal">
    <h1 class="title">我是标题</h1>
</ion-header-bar>
<!--内容--> <ion-content>
    <!-- 1.添加下拉刷新的组件 -->  <ion-refresher  pulling-text="正在刷新页面数据..."  on-refresh="doRefresh()">
    </ion-refresher>

    <!--ng-repent 渲染内容-->  <ul class="list">
        <!--  track by $index 用于循环展示重复的数据 通过¥index 数据下标 经常在测试是使用  -->  <li ng-repeat="g in goodses track by $index">
            <span ng-bind="g"></span>
        </li>
    </ul>
    <!-- 1.添加上拉刷新的组件 -->  <ion-infinite-scroll  on-infinite="loadMore()"  distance="3%">
    </ion-infinite-scroll>


</ion-content>
<!--页面底部--> <ion-footer-bar class="bar-royal">
    <h1 class="title">我是底部</h1>
</ion-footer-bar>
<script>
    var app=angular.module("myApp",["ionic"]);
    app.controller("myCtrl",["$scope",function ($scope) {
        $scope.goodses=[];
        for(var i=0;i<50;i++){
            $scope.goodses.push(i+"我是首页展示")
        }
        //下拉刷新  $scope.doRefresh=function () {
            $scope.goodses=[]; //下拉载入数据  for(var i=0;i<50;i++){
                $scope.goodses.push(i+"我是下拉载入****")
            }

            $scope.$broadcast("scroll.refreshComplete");
        }
        //上拉刷新  $scope.loadMore=function () {
             //上拉载入数据  for(var i=0;i<50;i++){
                $scope.goodses.push(i+"我是上拉载入++++")
            }
            $scope.$broadcast("scroll.infiniteScrollComplete");
        }
    }])



    /*  页面下拉刷新,其实就是延迟更改数据  数据一旦被延迟更新,在Angular中我们通过$scope.$apply()进行脏数据检查,然后将数据同步  ionic中,要通过广播信号的方式,使用$scope.$broadcase("scroll.refreshComplete")告诉页面中的所有组件,  数据已经刷新完成,可以重新加载数据  */ </script>
</html>