2017-03-01 3 views
0

私はionicを使って新しくなりました。2.自分のすべてのフィルタ(ModalCtrl)にカスタム検索入力とチェックボックス(それぞれ)を持つサービスを作成しました。それらの間で私はパラメータを送信/取得しますが、Dismiss(ModalCtrlからのデータ取得)がトリガされるまで待機し続けるためにサービスをアクティブに保つ方法をよく知っていません。Ionic 2 - サービスとmodalCtrl

基本的には、htmlからfilterPost関数を呼び出すことで開始します。filterService(ModalCtrlを開始するため)を呼び出します。ユーザーは選択したオプションを返すが、filterPostから取得できません。

私は別の領域にフィルタが必要なので、私はこれをやろうとしています。再利用したいのですが。助けのための

おかげ

filterPost.ts

filterPost(){ 
    let data = this.filtros.filterThePost(); 
    console.log(data); //Here i get immediately undefined, dont wait dismiss 
    this.titlepost = data; 
} 

filterService.ts

public filterThePost(){ 
    let profileModal = this.modalCtrl.create(MyFilterPost, { 
     id_title: this.id_title //send active id 
    }); 
    profileModal.onDidDismiss(data => { 
     //get data from modalCtrl, works nicely 
     console.log("Got service: "+data, data.id, data.nombre); 
     let info = { 
     nombre: data.title, 
     id: data.id 
     } 
     return info; 
    }); 
    profileModal.present();     
} 

myfilterpost.ts

saveFilter(id, name){  
    console.log("Selected: "+id, name); 
    this.viewCtrl.dismiss({ 
     id: id, 
     title: name 
    }); 
} 

答えて

1

あなたはinfo Fに戻ってきていますモーダルからサービスへ。ただし、サービス関数自体は何も返しません。 あなたが代わりに行うことができますすることはonDidDismissコールバックでthis.titlepost変数filterPost.tsクラスを設定するサービスへのコールバック関数を送っています。

試してみてください。あなたのfilterService.ts

public filterThePost(callbackfun:any){ 
    let profileModal = this.modalCtrl.create(MyFilterPost, { 
     id_title: this.id_title //send active id 
    }); 
    profileModal.onDidDismiss(data => { 
     //get data from modalCtrl, works nicely 
     console.log("Got service: "+data, data.id, data.nombre); 
     let info = { 
     nombre: data.title, 
     id: data.id 
     } 
     //return info; 
     callbackfun(info); 
    }); 
    profileModal.present();     
} 
でfilterPost.tsで

setTitlePost(data:any){ 
    this.titlepost=data; 
} 

filterPost(){ 
    this.filtros.filterThePost(this.setTitlePost.bind(this));//send callback 
    console.log(data); //Here i get immediately undefined, dont wait dismiss 
    //this.titlepost = data; 
}