下拉刷新&上拉加载
效果演示

核心code
html
<ion-view view-title="学生list">
<ion-content >
<ion-refresher spinner="spiral" on-refresh="doRefresh()"></ion-refresher>
<div class="demoWrapp">
<div class="sutdentItem slide-top" ng-repeat="studnet in students">
<div>姓名:{{studnet.name}}</div>
<div>年龄:{{studnet.age}}</div>
</div>
</div>
<ion-infinite-scroll ng-if="hasMore" immediate-check="false" icon="ion-loading-c" on-infinite="loadMore()" distance="10%">
</ion-content>
</ion-view>
js
testModule.controller('testCtrl',function($scope){
//模拟接口数据
var getSudent=function (data) {
var page=data.page;
if(page==1){
return {
hasMore:true,
list:[
{name:'小明',age:10},
{name:'小红',age:8},
{name:'小黄',age:20},
{name:'小黑',age:16},
{name:'小白',age:14}
]
}
}else if (page==2){
return {
hasMore:true,
list:[
{name:'小蓝',age:20},
{name:'小青',age:10},
{name:'小紫',age:10},
{name:'小一',age:18},
{name:'小二',age:12}
]
}
}else if (page==3){
return {
hasMore:false,
list:[
{name:'张三',age:20},
{name:'李四',age:10}
]
}
}else{
return {
status:'没有数据了'
}
}
};
//获取学生list
var queryStudent=function (param) {
var result=getSudent(param);
$scope.hasMore=result.hasMore;//判断还有没有更多
if(param.page==1){//判断是刷新还是加载更多
$scope.students=result.list;
}else{
$scope.students= $scope.students.concat(result.list);
}
console.log($scope.students)
$scope.$broadcast('scroll.refreshComplete');
$scope.$broadcast('scroll.infiniteScrollComplete');
};
//初始化进来的时候
var init=function() {
$scope.hasMore=false;
$scope.param={page:1 }
queryStudent($scope.param)
}
$scope.$on("$ionicView.beforeEnter",init)
//下拉刷新
$scope.doRefresh=function () {
init()
}
//上拉加载
$scope.loadMore=function () {
$scope.param.page++;
queryStudent($scope.param);
}
})
下边是我用在具体项目中的

<ion-view>
<ion-nav-title>
<div class="bar bar-stable">
<h1 class="title">
账户余额
</h1>
</div>
</ion-nav-title>
<ion-nav-buttons side="right">
<button class="button button-clear">支付设置</button>
</ion-nav-buttons>
<ion-content>
<ion-refresher spinner="spiral" on-refresh="methods.doRefresh()"></ion-refresher>
<div class="card-bg text-center">
<h1>¥{{models.balance}}</h1>
<button ui-sref="rsc.finance_reflect">提现</button>
</div>
<div class="gap-20">
<div class="list">
<li ng-repeat="item in models.carryList">
<span class="date-circle" ng-class="{'date-circle-outline':item.pay_surplus=='recharge'}"></span>
<div class="dateline-left">
<h3 class="text-black">{{item | payType}}</h3>
<h5 ng-if="item.pay_surplus=='recharge'">订单号{{item.orderNo}}</h5>
<h5 class="text-gray1">
{{item.time_creation | dateformatFilter:'yyyy-MM-dd HH:mm'}}
</h5>
</div>
<i class="icon">
<h2 ng-class="{'text-red1':item.pay_surplus=='recharge'}">-¥{{item.amount}}</h2>
</i>
</li>
</div>
</div>
<ion-infinite-scroll immediate-check="false" ng-if="models.hasMore" icon="ion-loading-c" on-infinite="methods.loadMore()" distance="15%">
</ion-infinite-scroll>
</ion-content>
</ion-view>
.controller('balance_ctrl', ['$scope', 'PassService',
function ($scope, PassService) {
//属性
$scope.models = {
balance: 0,
getListParam: {
page: 1
},
hasMore:false
}
//方法
$scope.methods = {
//账户余额
getSurplus: function () {
PassService.getSurplus().then(function (rep) {
$scope.models.balance = rep.data.pay_surplus_amount;
})
},
//提现记录
getList: function () {
PassService.getList($scope.models.getListParam).then(function (rep) {
$scope.models.hasMore=rep.data.exist;
if($scope.models.getListParam.page==1){//判断是刷新还是加载更多
$scope.models.carryList = rep.data.lists;
}else{
$scope.models.carryList = $scope.models.carryList.concat(rep.data.lists);
}
$scope.$broadcast('scroll.refreshComplete');
$scope.$broadcast('scroll.infiniteScrollComplete');
})
},
//上拉加载
loadMore:function () {
$scope.models.getListParam.page++;
$scope.methods.getList()
},
//下拉刷新
doRefresh:function () {
$scope.models.getListParam.page=1;
$scope.methods.getList();
}
}
//生命周期函数系列
$scope.$on("$ionicView.beforeEnter", function () {
$scope.methods.getSurplus()
$scope.methods.getList()
})
}])
下拉刷新&上拉加载的更多相关文章
- Android 下拉刷新上啦加载SmartRefreshLayout + RecyclerView
在弄android刷新的时候,可算是耗费了一番功夫,最后发觉有现成的控件,并且非常好用,这里记录一下. 原文是 https://blog.csdn.net/huangxin112/article/de ...
- SwipeRefreshLayout实现下拉刷新上滑加载
1. 效果图 2.RefreshLayout.java package myapplication.com.myapplication; import android.content.Context; ...
- 移动端下拉刷新上拉加载-mescroll.js插件
最近无意间看到有这么一个上拉刷新下拉加载的插件 -- mescroll.js,个人感觉挺好用的,官网地址是:http://www.mescroll.com 然后我就看了一下文档,简单的写了一个小dem ...
- 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载
title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...
- ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多
ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多 package com.example.ListViewDragItem; import android.app.Ac ...
- [ionic开源项目教程] - 第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll
第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll 1.将tab1.html的代码改为如下: <ion-content> <ion-ref ...
- JS+CSS实现的下拉刷新/上拉加载插件
闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果
最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...
- ListView下拉刷新上拉加载更多实现
这篇文章将带大家了解listview下拉刷新和上拉加载更多的实现过程,先看效果(注:图片中listview中的阴影可以加上属性android:fadingEdge="none"去掉 ...
- RecyclerView下拉刷新上拉加载(三)—对Adapter的封装
RecyclerView下拉刷新上拉加载(一) http://blog.csdn.net/baiyuliang2013/article/details/51506036 RecyclerView下拉刷 ...
随机推荐
- hdu 1520(简单树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 思路:dp[u][0]表示不取u的最大价值,dp[u][1]表示取u的最大价值,于是有dp[u] ...
- 《C++ Primer Plus》第8章 函数探幽 学习笔记
C++ 扩展了 C 语言的函数功能.通过将 inline 关键字用于函数定义,并在首次调用该函数前提供其函数定义,可以使得 C++ 编译器将该函数视为内联函数.也就是说,编译器不是让程序跳到独立的代码 ...
- [Android] 开源框架 Volley 自定义 Request
今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的. pu ...
- 第九讲 C#练习题
1.接收一个整数N 如果N是正数就输出1·N 如果是负数就提示出错输出 由丰老师提供 -_-~ 2.编一个程序,从三个红球,五个白球,六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案. ...
- 通过python3学习编码
简介 今天在写python程序的时候,遇到了编码问题,今天,我准备好好了解一下编码问题 ASCII编码 计算机是美国人发明的,最初只有不超过256字符需要编码,1字节能编码2**8个,所以ASCII编 ...
- JAVA编程你必须知道的那些英文单词
第一章: JDK(Java Development Kit) java开发工具包 JVM(Java Virtual Machine) java虚拟机 Javac 编译命令 ...
- 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
解决方法一: SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 优点:不用重启mysql 缺点:重启mysql后还会 ...
- android系统权限SET_PREFERRED_APPLICATIONS怎么获取
最近自己写个demo,需要用到SET_PREFERRED_APPLICATIONS权限 在网上找了半天,大概有两种方式: 1. 将手机root后,把apk强行push到system/app目录下,重启 ...
- .net core 启动域名及端口配置
前两天转载一篇.net core 启动分析,由于发布时候一直纠结在默认5000端口上,所以好好研究了一下. 1.IIS集成 如果通过IIS当宿主的话,那这些都不是事情,强大的IIS可以帮助我们对站点的 ...
- elasticsearch的store属性 vs _source字段
众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设置为no?设置为yes是否是重复的存储呢? 我们将一个field的值写入es中,要 ...