Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 更改$IonichStory.backView()的状态参数后返回_Angularjs_Ionic Framework_Ionic - Fatal编程技术网

Angularjs 更改$IonichStory.backView()的状态参数后返回

Angularjs 更改$IonichStory.backView()的状态参数后返回,angularjs,ionic-framework,ionic,Angularjs,Ionic Framework,Ionic,我正在使用Ionic框架开发一个android应用程序 其中,我有三个视图,view1、view2和view3 导航将类似于view1->view2->view3 当从view3返回到view2时,我需要更改view2的stateParamparam1值以执行一些操作。下面的代码显示,当单击view3中的后退按钮时,我正在更改view2的stateParam值 下面是覆盖android设备backbutton操作的代码 $ionicPlatform.registerBackButtonActio

我正在使用Ionic框架开发一个android应用程序

其中,我有三个视图,
view1、view2和view3

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

当从
view3
返回到
view2
时,我需要更改
view2
的stateParam
param1
值以执行一些操作。下面的代码显示,当单击
view3
中的后退按钮时,我正在更改
view2
的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
。现在,通过单击“上一步”按钮,我可以仅查看
view3
view2
,而不必移动到
view1


如何使后退按钮从
view2
移动到
view1
,即使在更改了
view2
的stateParam值之后?

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

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

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

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();
在您的具体情况下,可能是:

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

我遇到了相同的问题,但我的view2是根,因此我禁用了当view3返回到view2时的back,从而使back view3消失

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

有了它,我的代码运行良好,对于您的目的地,您可以手动在view2.oneter()中添加一个backview

Try$state.go('view2',{param1:true});埃姆雷,我试过了。但是没有运气。同样的结果。这将是一种硬编码,但你能创建一个开关案例,并为每个案例编写代码吗