2017-03-01 1 views
0

저는 이온 2를 사용하여 매우 새롭습니다. 모든 필터 (ModalCtrl)에 맞춤 검색 입력란과 체크 박스 (각각)가있는 서비스를 만들었습니다. 그 사이에 매개 변수를 보내거나 가져 오지만 해제 (ModalCtrl에서 데이터 가져 오기)가 트리거 될 때까지 대기 상태로 유지하는 방법을 잘 모릅니다.이오니아 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를 반환하는 모달을 서비스에 쓴다. 그러나 서비스 기능 자체는 아무것도 반환하지 않습니다. 대신 할 수있는 일은 filterPost.ts 클래스 변수 this.titlepostonDidDismiss 콜백에 설정하는 서비스에 콜백 함수를 보내는 것입니다.

보십시오 : 당신의 filterService.ts에서 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; 
} 

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();     
}