2017-02-18 7 views
1

2ページ間でコールバックしたい。 ページ1では、私はこのコードを持っている:Ionic2 navController pop with params(コールバック)

DataInfo= [ 
    { 
     Price: 0, 
     ClosePrice: 0, 
     UpdateTime:"", 
     DefaultPrice:0 
    } 

    ] 

GetClosePrice(i):number{ 
return DataInfo[i].ClosePrice; 
} 

i「はi」は2ページ、どのように私は機能GetClosePriceを(読み込むことができますからの値を取得したい)ときに、ページ1のからNavControllerリターン(this.navCtrl.pop())

答えて

11

ROOT PAGE CLASS

this.navCtrl.push(Page, 
{ 
    data: this.data, 
    callback: this.getData 
}); 

getData = (data) => 
{ 
    return new Promise((resolve, reject) => { 
    for (let order of orders) { 
     this.data = data; 
    } 
    resolve(); 
    }); 
}; 

PUSHED PAGE CLASS

constructor(public navCtrl: NavController, public navParams: NavParams) 
{ 
    this.callback = this.navParams.get('callback'); 
    this.data  = this.navParams.get('data') || []; 
} 

sendData(event: any): void 
{ 
    this.callback(this.data).then(()=>{ this.navCtrl.pop() }); 
} 

PUSHED PAGE TEMPLATE

<button ion-button (click)="sendData($event)"> 
+0

おかげで、 いただきまし先のページのコード? – Fray

+0

ああ、申し訳ありません。私はそれで答えを更新しました。 – anonym

+1

ありがとう^^それは働く – Fray

2

私はIonic forumに同様の質問に答えました。私はちょうどこの動作を達成するためにEvents listenersを使用しました。

MainPage-

import { NavController, Events } from 'ionic-angular'; 
import { OtherPage } from '../other/other'; 

export class MainPage{ 
    constructor(private navCtrl: NavController, 
       private events: Events) { } 

    private pushOtherPage(){ 
     this.events.subscribe('custom-user-events', (paramsVar) => { 
      // Do stuff with "paramsVar" 

      this.events.unsubscribe('custom-user-events'); // unsubscribe this event 
     }) 

     this.navCtrl.push(OtherPage); // Push your "OtherPage" 
    } 
} 

OtherPage-

export class OtherPage { 
    // Under some function 
    this.navCtrl.pop().then(() => { 
     // Trigger custom event and pass data to be send back 
     this.events.publish('custom-user-events', myCustomParams); 
    }); 
}