更改$ ionicHistory.backView()的stateParams之后返回

时间:2015-12-10 14:50:41

标签: angularjs ionic-framework ionic

我正在使用Ionic Framework开发一个Android应用程序。

在那,我有三个观点,view1, view2 and view3

导航将类似于view1 -> view2 -> view3

view2移回view3时,我需要更改param1的stateParam view2值以执行某些操作。下面的代码显示我在view2

中单击后退按钮时更改了view3的stateParam值

以下是覆盖Android设备backbutton

动作的代码
$ionicPlatform.registerBackButtonAction(function() {

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

}, 100);

回到view2后,如果我现在点击后退按钮,它将移至view3而不是view1。现在,我只能通过点击后退按钮查看view3view2,而根本不会移至view1

如何将后退按钮从view1移至view2即使在更改view2的stateParam值后?

2 个答案:

答案 0 :(得分:2)

我终于找到了解决这个问题的方法,不幸的是,这是一个黑客攻击,所以它有点难看。

提示不仅要更新stateParams,还要更新stateId。

请参阅以下可重复使用的答案:

gawk

在您的具体情况下,它可能只是:

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

答案 1 :(得分:1)

我遇到了同样的问题,但是我的view2是root,所以当view3回到view2时我禁用了后面,因此后面的view3消失了

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

使用此代码我的代码运行良好,并且对于目的地,您可以手动在view2.onenter()中添加backview