2017-12-01 3 views
1

私は単純なfirebaseイメージのアップロードページで作業しています。しかし、アップロード後のファイルイメージは、URLが同じであるため、自己更新しません。しかし私はそれが同じであることを望む。だから私は新しいイメージを取得するために元気づけた、それは完全に動作しますが、私は上からプルダウンしなければなりません。ボタンをクリックしてイオンリフレッシャーを使用する

ボタンをクリックしてアップロードを完了したらこの機能を実行したいと思います。

 <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 }}"> 

ts;

 doRefresh(refresher) { 

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

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

    }); 
    } 

プルダウンしても画像がよく更新されます。私はこの機能を他の機能(クリックボタン)で実行することはできません。

this.doRefresh(); 

このコマンドはエラーを示します。とにかくそれを修正することを知っていますか?

答えて

0

恐らくリフレッシャーは必要ありません。リフレッシャーは、ユーザーがプルダウンできるように設計されています。 しかし、あなたはここに

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

リフレッシャーコードを見ればあなたは_beginRefresh関数を呼び出していることをトリガーすることができるはずです。 AngularのViewChildメカニズムを使用してRefresherオブジェクトを保持することができます。

+0

どうすればその_beginRefreshを呼び出すことができますか? – ugrdursun

0

refresherオブジェクトを想定しているため、使用できません。したがって、以下のように新しいメソッドを作成し、buttonを使って起動してください。

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

注:したい場合、あなたはそれがDRYを次のtoo.Thenの上使用してdoRefresh()方法をリファクタリングすることができます。

+0

私はそれを試してみましたが、イメージアップロードの前にすばやく動いています。時には空白として表示される画像。 – ugrdursun

+0

私はその問題を実際に解決しようとしています – ugrdursun

0

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の機能が効果的にオーバーロードされます。

+0

私はそれを試み、結果を投稿します – ugrdursun

関連する問題