1.先不做上拉触发,用button模拟一下,触发函数

export class StudyComponent implements OnInit {

  /*列表数据流 */
list$: Observable<any[]>;
/*页面缓存*/
beh: BehaviorSubject<any[]>;
/*模拟下拉事件 */
scrolEvent = new Subject(); ngOnInit() {
/*订阅scrolEvent,下方scrol()执行next的时候会跑这个订阅 */
this.scrolEvent.pipe(
map(() => {
this.getdata();
})
).subscribe();
} constructor() {
this.list$ = new Observable<any[]>();
this.beh = new BehaviorSubject<any[]>([]);
} /*获取数据 */
getdata() {
this.list$ = this.beh; // 提供观察者next新数据
const oldlist = this.beh.getValue(); // 取旧数据
this.serve()
.subscribe(v => {
this.beh.next(oldlist.concat(v));
});
} /*滚动触发函数 */
scrol() {
this.scrolEvent.next();
} /*模拟接口返回数据 */
serve() {
return of([Math.random() * , Math.random() * , Math.random()]);
}
}

  html

<ng-container *ngIf="list$ | async as list">
<div>
<p *ngFor="let item of list">{{item}}</p>
</div>
</ng-container> <button (click)="scrol()">列表</button>

2.若是有两个列表(像顶部tab有  待处理、全部)

export class StudyComponent implements OnInit {

  /*列表数据流 */
list$: Observable<any[]>;
/*模拟下拉事件 */
scrolEvent = new Subject();
/*两个页面数据 缓存*/
segData: {
flag1: BehaviorSubject<any[]>,
flag2: BehaviorSubject<any[]>
};
/*当前页标签 默认页面1*/
curFlag = 'flag1'; ngOnInit() {
this.list$ = new Observable<any[]>();
// this.segData.flag1 = new BehaviorSubject<any[]>([]);
// this.segData.flag2 = new BehaviorSubject<any[]>([]);
this.segData = {
flag1: new BehaviorSubject<any[]>([]),
flag2: new BehaviorSubject<any[]>([])
}; /*订阅scrolEvent,下方scrol()执行next的时候会跑这个订阅 */
this.scrolEvent.pipe(
map(() => {
this.getdata(this.curFlag);
})
).subscribe();
} constructor() {
} /*获取数据 */
getdata(flag: string) {
this.list$ = this.segData[flag]; // list$指向一个segData
const oldlist = this.segData[flag].getValue(); // 取旧数据
this.serve(this.curFlag)
.subscribe(v => {
this.segData[flag].next(oldlist.concat(v));
});
} /*滚动触发函数 */
scrol(flag: string) {
this.curFlag = flag;
this.scrolEvent.next();
} /*模拟接口返回数据 */
serve(flag: string) {
return of(
[
Math.random() * + flag,
Math.random() * + flag,
Math.random() + flag]
);
}
}

  html

<ng-container *ngIf="list$ | async as list">
<div>
<p *ngFor="let item of list">{{item}}</p>
</div>
</ng-container> <button (click)="scrol('flag1')">列表1</button>
<button (click)="scrol('flag2')">列表2</button>

Angular_上拉刷新的更多相关文章

  1. SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新

    下拉刷新和上拉刷新都用SwipeRefreshLayout 自带的进度条 布局 <?xml version="1.0" encoding="utf-8"? ...

  2. 使用MJRefresh遇到的一个问题,上拉刷新后tableview瞬间滑到最底部

    最近用MJRefresh上拉刷新时遇到一个问题,就是上拉刷新后,tableview会瞬间滑到最底部,用户还要往回翻才能看到新刷出来的数据,体验十分不好.查了很久没找到原因,最后发现在refreshvi ...

  3. MUI - 上拉刷新/下拉加载

    新闻信息列表必备的功能,支持Table,Ul等列表. 以下是DIV版本,在安卓端或者ios端必须使用双webview模式,传送门:http://dev.dcloud.net.cn/mui/pulldo ...

  4. Android UI之下拉刷新上拉刷新实现

    在实际开发中我们经常要用到上拉刷新和下拉刷新,因此今天我写了一个上拉和下拉刷新的demo,有一个自定义的下拉刷新控件 只需要在布局文件中直接引用就可以使用,非常方便,非常使用,以下是源代码: 自定义的 ...

  5. Android PullToRefreshListView上拉刷新和下拉刷新

    PullToRefreshListView实现上拉和下拉刷新有两个步骤: 1.设置刷新方式 pullToRefreshView.setMode(PullToRefreshBase.Mode.BOTH) ...

  6. ListView(2)最简单的上拉刷新,下拉刷新

    最简单的上拉刷新和下拉刷新,当listview滚动到底部时向上拉刷新数据.当listview滚动到最顶部时下拉刷新.       图1,上拉刷新 图2,下拉刷新 1,设置lisview,加载heade ...

  7. jQuery模拟原生态App上拉刷新下拉加载

    jQuery模拟原生态App上拉刷新下拉加载效果代码,鼠标上拉时会显示loading字样,并且会模拟加载一条静态数据,支持触屏设备使用. <!doctype html> <html ...

  8. Swiper+JS 上拉刷新

    JS // 上拉刷新                        var page = 2;            var isAjax = true;//加载数据前状态            $( ...

  9. iOS MJRefresh下拉、上拉刷新自定义以及系统详细讲解

    更新: MJRefresh 更新功能,默认根据数据来源 自动显示 隐藏footer,这个功能可以关闭 DoctorTableView.mj_footer.automaticallyHidden = N ...

随机推荐

  1. ASP.NET Core 下自定义权限验证

    效果图: 如果没有权限时,显示: 代码: public class AuthorizeAdminAttribute : TypeFilterAttribute { #region 字段 private ...

  2. Linux新手随手笔记1.7

    配置网卡(本地电脑) Vment1   仅主机模式 Vment8   nat模式 物理机 : 192.16810.1  /255.255.255.0 服务器 : 192.168.10.10 /255. ...

  3. completable 用法

    CompletableFuture 前面我们使用过jdk5 提出future的用法,但是在获取结果上并不是那么友好 在Java8中,CompletableFuture提供了非常强大的Future的扩展 ...

  4. ajax属性详解

    https://blog.csdn.net/mooncom/article/details/52402836 资料库: $.ajaxSetup()方法为将来的ajax请求设置默认值. http://w ...

  5. 汉诺塔I && II

    汉诺塔I 题目链接:https://www.nowcoder.com/questionTerminal/7d6cab7d435048c4b05251bf44e9f185 题目大意: 略 分析: 利用汉 ...

  6. Python进阶11---异常及模块化

    异常处理 异常Exception 产生异常

  7. DAY23、面向对象特性

    一.复习1.类: 对象属性的查找顺序:先找自身再找类 类的名称空间:直接写在类中 对象的名称空间:写在__init__方法中,通过self.属性形成名称空间中的名字 类的方法:在类中用@classme ...

  8. Day 1 下午

    POINT 1 贪心 每一步都取当前的最优解的思想:一般来说符合直观思路,需要严格的证明:OI中使用多个错误的贪心策略进行加成有时会有良好的效果 例一给定N个农民,第i个农民有Ai单位的牛奶,单价Pi ...

  9. WordPress安装官方文档教程

    01.可访问的网址 02.目录和软件 包括: 访问 web服务器 (通过 shell 或者 FTP)的权限 一个 文本编辑器 一个 FTP客户端 (如果你需要在一个远程服务器上安装WordPress) ...

  10. Verilog语言实现并行(循环冗余码)CRC校验

    1 前言 (1)    什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能, ...