我正在使用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
。现在,我只能通过点击后退按钮查看view3
和view2
,而根本不会移至view1
。
如何将后退按钮从view1
移至view2
即使在更改view2
的stateParam值后?
答案 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