ionic 主动触发下拉刷新

ionic3 主动触发下拉刷新指令

用法

   页面加载的时候触发

添加在ion-refresher

   每次进入页面视图的时候触发


指令代码

import { Directive, OnInit, Injector, Input } from '@angular/core';

import { Refresher, Content, ViewController } from 'ionic-angular';

@Directive({

  selector: '[beginRefresh]'

})

export class BeginRefreshDirective implements OnInit {

  @Input('beginRefresh')  private _beginRefresh = false;

  constructor(

    private injector: Injector,

    private viewCtrl: ViewController

  ) {

  }

  ngOnInit() {

    if (!this._beginRefresh) {

      this.beginRefresh();

    } else {

      this.viewCtrl.didEnter.subscribe(() => {

        this.beginRefresh();

      });

    }

  }

  private async beginRefresh() {

    const top = await this.getContentTop();

    const refresher = this.injector.get(Refresher);

    refresher._top = `${top}px`;

    refresher.state = 'refreshing';

    refresher._beginRefresh();

  }

  private getContentTop(): Promise<number> {

    const content = this.injector.get(Content);

    return new Promise((resolve, reject) => {

      const timer = setInterval(() => {

        if (content.contentTop) {

          resolve(content.contentTop);

          clearInterval(timer);

        }

      }, 0);

    });

  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • core package 概要:Core是所有其他包的基础包.它提供了大部分功能包括metadata,templa...
    LOVE小狼阅读 2,891评论 0 3
  • 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 2.项目介绍...
    55lover阅读 717评论 0 6
  • 我家宝宝马上两个月了,还没有聚肚,满月之后便便次数渐渐减少,由一天八九次逐渐减少到一两次。最近天气时暖时冷,宝宝有...
    王飞侠阅读 38,028评论 6 5
  • 迭代器模式: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 比如说,现在我们有两个聚合对...
    ghwaphon阅读 1,549评论 0 5
  • 写欧体,需要知道用笔、笔法和结体! (一) 用笔 欧字法度森严,源自魏碑,字形偏长,这些显著的特点...
    墨缘革离阅读 2,348评论 4 8

友情链接更多精彩内容