2016-06-20 6 views
4

Ionic2에서 네이티브 backButton 이벤트 핸들러를 추가하고 싶습니다. 문제는 Ionic2 설명서가 Platform 인스턴스의 registerBackButtonAction 메소드를 사용한다고 말하지만 그러한 방법은 없습니다.이오닉 2 - backButton 처리 방법

registerBackButtonAction 대신 EventEmitter 유형의 속성이 있습니다 (그러나 작동하지 않거나 구독 방법을 모르겠습니다).

아이디어가 있으십니까? 마르신

답변

1

당신은 angular2 routerOnActivate .. 위치 .back()로 처리 할 수는

 <button danger (click)="navigateBack()">Danger</button> 

귀하의 TS 파일은

// Import  
    import {ComponentInstruction} from '@angular/router-deprecated'; 

    // Class 
    export class ViewImagePge { 
    public prev: ComponentInstruction; 
    } 

    public routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction): void { 
     this.prev = prevInstruction; 
    } 

    // navigateBack() Function 

    public navigateBack(): void { 
    if(this.prev && this.prev.routeName === 'Foo') { 
      this.location.back(); 
     } else { 

      // can keep default path 

      this.router.navigate(['/Foo']); 
     } 
    } 
0

당신은 코드 아래 사용할 수 있습니다 포함되어 있습니다. 내가 무슨 문제를 알고 (이온)에서 asing 마이크 후, 지금 며칠 하드웨어 backbuttons 처리되었다

platform.registerBackButtonAction(function() { 

    if(menu.isOpen()) 
       { 
       menu.close(); 
       }else 
       { 
       nav.pop(); 
       }   
    }, 100); 
1

모바일 장치의 누르면 다시 버튼을 작동합니다.

문제는 hierachy 우선 순위가 없다는 것입니다. 기본적으로 기본 우선 순위 값 (0)이있는 작업은 하나 뿐이며 그 작업은 모든 것을 처리합니다.

그래서 사용자 정의 액션을 추가하려면 액션에 기본 코드 액션을 추가해야합니다. 그렇지 않으면 오버라이드하고 사이드 메뉴를 닫지 않습니다.

github에는 backbutton 서비스와 두 페이지가있는 sidemenu가있는 demo이 있습니다. 1 페이지에서 두 번 클릭하여 응용 프로그램을 끝내고 2 페이지에서 기본값으로 두 페이지 모두에서 사이드 메뉴를 처리하여 토스트를 표시하는 대신 닫습니다.

순간에는 모달을 처리하지 않지만 최대한 빨리 추가하고 싶습니다.

희망이 당신을 도울 수 있기를 바랍니다.

+0

위대한 답변, 당신의 설명은 나를 도왔습니다! 감사합니다 – JoeriShoeby

+0

다행 :) –