TL; DR
有没有一种方法可以使用$ ionicHistory.goBack(-2)更改我要返回的状态的$ stateParams?
我正在使用Ionic开发一个小型应用程序,但是我面临以下问题:
我有几个状态是整个过程的一部分:productInfo,选择和比较。用户选择一个产品,然后其产品信息将显示在状态productInfo中。所选产品通过$stateParams
传递。
productInfo状态
$stateProvider.state('productInfo', {
url: '/compare/info',
params: {
product: null
},
cache: false,
views: {
'main-screen': {
templateUrl: 'templates/modules/comparator/info.html',
controller: 'CompareInfoCtrl',
controllerAs: 'product'
}
}
})
在productInfo内部,有一个比较按钮,用户可以在该按钮上进行选择,然后选择另一个要与第一个产品进行比较的产品。
当用户在选择状态下确认选择时,应用程序将进入最后一个状态,即比较状态,显示两种产品的结果。
在最后一个状态(比较)中,如果用户单击其中一个产品,则应用程序必须返回到状态1(productInfo),并选择了单击的产品。
我使用
$ionicHistory.goBack(-2)
而不是$state.go('productInfo')
以避免弄乱我的后退按钮(每个屏幕都有一个默认按钮,该按钮仅调用$ ionicHistory.goBack())。问题开始了:我无法更改productInfo状态的
$stateParams
,因此显示了最后选择的产品。理想的情况是类似于
$ionicHistory.goBack(-2, {product: obj})
。我的最后一枪是:
this.$ionicHistory.viewHistory().views[this.$ionicHistory.backView().backViewId].stateParams.id = this.selectedProduct.id;
this.$ionicHistory.goBack(-2);
但这会创造新的历史,因此无法按预期工作。
最佳答案
您是否尝试清除了前两个 View (“productInfo”,“comparison”),然后进入请求的状态。就像这样:
$ionicHistory.removeBackView();
$ionicHistory.removeBackView();
$state.go('productinfo', {product: <selected-product>});