单击按钮使用离子刷新器

时间:2017-12-01 01:23:18

标签: angular typescript firebase ionic-framework ionic3

我正在开发一个简单的firebase图片上传页面;但上传文件图片后,由于url相同,因此无法自行更新。但我希望它是一样的。所以我尝试复习以获得新的图像,它完美地工作,但我必须从顶部拉下来。

我想在单击按钮时运行此功能,并上传完成。

TS;

       <ion-refresher (ionRefresh)="doRefresh($event)">
        <ion-refresher-content
          pullMin="100"
          pullingIcon="arrow-dropdown"
          pullingText="Yenilemek için çekin"
          refreshingSpinner="circles">
        </ion-refresher-content>
      </ion-refresher>
<img src="{{ ppURL }}">

当我下拉并且图像更新时,它完美有效。但我无法在另一个功能(单击按钮)中运行此功能。

      doRefresh(refresher) {

    const ppRef = storage().ref(`ProfilePictures/${this.myUid}`)
    ppRef.getDownloadURL().then(url => {
      this.ppURL = url

      refresher.complete();
    }).catch(err => {
      // Handle errors

    });
  }

此命令出错。无论如何你知道要解决这个或任何建议吗?

3 个答案:

答案 0 :(得分:1)

您可以简单地将refresher参数设为可选,因为您在其他位置的通话不会传递refresher个对象。

doRefresh(refresher?:any) { //"?" in typescript means the parameter is optional

    const ppRef = storage().ref(`ProfilePictures/${this.myUid}`)
    ppRef.getDownloadURL().then(url => {
        this.ppURL = url

        refresher && refresher.complete();//make sure refresher is truthy before calling complete
   }).catch(err => {
     // Handle errors

   });
}

这样您就可以有效地重载doRefresh函数。

答案 1 :(得分:0)

你可能不需要复习。复习器旨在被用户拉下来。 但是如果你在这里查看Refresher代码

https://github.com/ionic-team/ionic/blob/master/src/components/refresher/refresher.ts

您应该能够通过调用_beginRefresh函数来触发它。您可以使用Angular的ViewChild机制获取Refresher对象。

答案 2 :(得分:0)

您不能使用它,因为它需要refresher个对象。所以,只需编写如下所示的新方法,然后使用button

将其触发
 refreshImage() {
    const ppRef = storage().ref(`ProfilePictures/${this.myUid}`)
    ppRef.getDownloadURL().then(url => {
      this.ppURL = url;      
    }).catch(err => {
      // Handle errors
    });
  }

注意:如果您需要,也可以使用上面的方法重构doRefresh()方法。然后它会跟随DRY