2017-02-18 4 views
1

두 페이지 사이에 콜백을 만들고 싶습니다. 페이지 1에서 ,이 코드가 있습니다Ionic2 navController pop with params (콜백)

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

    ] 

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

내가 '난'난 (함수 GetClosePrice를로드 할 수있는 방법 페이지 2에서의 값)을 얻으려면을 때 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(); 
    }); 
}; 
<button ion-button (click)="sendData($event)"> 
+0

감사합니다, 뭐죠 대상 페이지의 코드? – Fray

+0

오, 죄송합니다. 나는 그것으로 답변을 업데이트했습니다. – anonym

+1

고마워요 ^^ 작동합니다 – Fray

2

PUSHED PAGE TEMPLATE

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() }); 
} 
414, PUSHED PAGE CLASS

나는 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); 
    }); 
}