Angularjs 更改$IonichStory.backView()的状态参数后返回
我正在使用Ionic框架开发一个android应用程序 其中,我有三个视图,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
view1、view2和view3
导航将类似于view1->view2->view3
当从view3
返回到view2
时,我需要更改view2
的stateParamparam1
值以执行一些操作。下面的代码显示,当单击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()中添加一个backviewTry$state.go('view2',{param1:true});埃姆雷,我试过了。但是没有运气。同样的结果。这将是一种硬编码,但你能创建一个开关案例,并为每个案例编写代码吗