我正在开发一个简单的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
});
}
此命令出错。无论如何你知道要解决这个或任何建议吗?
答案 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
。