Sel*_*lva 6 angularjs ionic-framework ionic
我正在使用Ionic Framework开发一个Android应用程序.
在那,我有三个观点,view1, view2 and view3.
导航会像 view1 -> view2 -> view3
当回到to view2时view3,我需要更改stateParam param1值view2以执行某些操作.下面的代码显示我view2在单击后退按钮时更改stateParam值view3
以下是覆盖Android设备backbutton动作的代码
$ionicPlatform.registerBackButtonAction(function() {
if ($state.current.name == "view3") {
$ionicHistory.backView().stateParams = {param1:true};
$ionicHistory.goBack(); // moves to view2
} else {
$ionicHistory.goBack();
}
}, 100);
Run Code Online (Sandbox Code Playgroud)
搬回去之后view2,如果我现在点击后退按钮,它将移动到view3而不是view1.现在我只能够查看view3并view2通过单击后退按钮,一点也不移动view1.
如何使返回按钮移动到view1距离view2甚至改变的stateParam值之后view2?
我终于找到了这个问题的解决方案,不幸的是,这是一个黑客,所以它有点难看。
提示不仅要更新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();
Run Code Online (Sandbox Code Playgroud)
在您的具体情况下,它可能只是:
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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |