我正在使用$state.go('someState', {'param':true})
重定向到一个状态,你可以看到我正在修改一个标志。
然而,当我尝试通过状态控制器中的$stateParams.param = false;
将标志切换回false时,似乎没有发生任何事情并且标志仍为true
我在这里做错了吗?
修改
这是重定向发生的地方
app.controller("MainController", function($scope, $state) {
$scope.$on('$ionicView.loaded', function() {
ionic.Platform.ready(function() {
if (navigator && navigator.splashscreen) navigator.splashscreen.hide();
});
});
this.reset = function() {
$state.go('register', {
'reset': true
});
}
});
这是尝试更改标志的地方
app.controller("OtherController", function($scope, $state, $stateParams) {
$scope.$on('$ionicView.beforeEnter', function() {
var reset = $stateParams.reset;
if (reset) {
$stateParams.reset = false;
alert("After resetting, set flag back to false: " + $stateParams.reset);
}
});
});
另一个编辑
这就是我在app app中设置OtherController
状态的方式。请注意,我没有为MainController
设置状态,但我显然仍在index.html
中指定它。我还在其各自的模板文件OtherController
中指定register.html
。
$stateProvider
.state('register', {
url: '/register',
params: {
'reset': false
},
templateUrl: 'templates/register.html'
})
答案 0 :(得分:0)
Mayby你可以这样做。使用事件$ stateChangeStart而不是$ ionicView.beforeEnter
$rootScope.$on("$stateChangeStart", function(evt, to, toP, from, fromP) {
var reset = toP.reset;
if (reset) {
toP.reset = false;
alert("After resetting, set flag back to false: " + toP.reset);
}
});
答案 1 :(得分:-1)
你是否在你的控制器中注入了$stateParams
,如下所示?
controller('testCrtl',
[ '$scope','$stateParams'
function($scope , $stateParams ) {
....
....
}
编辑.............
你错过了路由吗?如果是的话.... 您需要像这样实现路由
$stateProvider.state('toState', {
templateUrl:'test.html',
controller:'stateController',
params: {
'reset': true,
}
});
然后您可以像这样导航到它:
$state.go('register', {
'reset': true
}