$ionicHistory.backView() stateParams 변경 후 돌아가기 (Going back after changing stateParams of $ionicHistory.backView())


문제 설명

$ionicHistory.backView() stateParams 변경 후 돌아가기 (Going back after changing stateParams of $ionicHistory.backView())

Ionic Framework를 사용하여 Android 앱을 개발 중입니다.

그 안에 view1, view2 및 view3의 세 가지 보기가 있습니다.

탐색 view1 ‑> 보기2 ‑> view3

view3에서 view2로 다시 이동할 때 stateParam param1 값을 변경해야 합니다. view2 일부 작업을 수행합니다. 아래 코드는 view3

에서 뒤로 버튼을 클릭할 때 view2의 stateParam 값을 변경하고 있음을 보여줍니다.

다음은 Android의 작업을 재정의하는 코드입니다. 기기 뒤로가기 버튼

$ionicPlatform.registerBackButtonAction(function() {

      if ($state.current.name == "view3") {
          $ionicHistory.backView().stateParams = {param1:true};
          $ionicHistory.goBack(); // moves to view2
      } else {
          $ionicHistory.goBack();
      }

}, 100);

view2로 다시 이동한 후, 지금 뒤로 버튼을 클릭하면 view1이 아닌 view3으로 이동합니다. 이제 뒤로 버튼을 클릭하여 view3view2만 볼 수 있습니다. view1로 전혀 이동하지 않습니다.

view2의 stateParam 값을 변경한 후에도 view2에서 view1로 이동하는 뒤로 버튼을 만드는 방법은 무엇입니까?


참조 솔루션

방법 1:

I've finally found a solution to that issue, unfortuately, it's a hack so it's a little bit ugly.

The tip is to not only update stateParams, but also stateId.

Please see bellow a re‑usable answer :

var params = {param1:true};
var backView = $ionicHistory.backView();

var stateId = backView.stateName;
for (var key in params) {
    if (params[key] && params[key] !== "") {
        stateId += "_" + key + "=" + params[key];
    }
}

backView.stateParams = params;
backView.stateId = stateId;
$ionicHistory.goBack();

In your specific case, it could just be:

if ($state.current.name == "view3") {
    var backView = $ionicHistory.backView();
    backView.stateParams = {param1:true};
    backView.stateId = backView.stateName + "_param1=true";
    $ionicHistory.goBack(); // moves to view2
} else {
    $ionicHistory.goBack();
}

방법 2:

I met the same issue,but my view2 is root,so I disabled the back when view3 back to view2,thus made back view3 disappear

   $ionicHistory.backView().stateParams = resultObject;
   $ionicHistory.nextViewOptions({   disableBack: true });//this can
   $ionicHistory.goBack();

with this my code runs well,and for your destination,you can add a backview in view2.onenter() manually

(by SelvaSébastien BATEZATOne Double)

참조 문서

  1. Going back after changing stateParams of $ionicHistory.backView() (CC BY‑SA 2.5/3.0/4.0)

#ionic #angularjs #ionic-framework






관련 질문

Cordova - OS 업그레이드 후 iOS/Android 모두에서 앱 충돌 (Cordova - app crashes on both iOS/Android after an OS upgrade)

모바일용 HTML 5의 특정 영역에 링크가 있는 이미지 (Image with links in certain areas in HTML 5 for mobile)

Play 스토어에서 오류 발생 - "이 앱은 모든 기기와 호환되지 않습니다." (Getting error from play store - “This app is incompatible with all of your devices.”)

div의 오른쪽 하단에 이온 버튼 정렬 (Align an ionic button at the bottom right of a div)

새로운 Xcode 프로비저닝 정책 및 Ionic Framework (New Xcode provisioning policy and Ionic Framework)

각도 [$injector:unpr] 알 수 없는 공급자 오류를 해결하는 방법? (How to solve angular [$injector:unpr] Unknown provider error?)

ionic, 팝오버 범위에 범위 변수 전달 (ionic, pass scope variable to popover scope)

Angular: 2필드 데이터 바인딩 문제 (Angular: issue with two-field data binding)

ionic 2에서 ion-title의 글꼴 색상 변경 (Change font color of ion-title in ionic 2)

PhoneGap 빌드가 내 모든 파일을 업데이트하지 않습니다. (PhoneGap build is not updating all of my files)

Ionic 빌드 Android를 수행하는 동안 오류가 발생했습니다. (Error while doing Ionic build android)

$ionicHistory.backView() stateParams 변경 후 돌아가기 (Going back after changing stateParams of $ionicHistory.backView())







코멘트