Javascript 无法修改控制器中的$stateParam参数
我使用Javascript 无法修改控制器中的$stateParam参数,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我使用$state.go('someState',{'param':true})重定向到一个状态,正如您所看到的,我也在修改一个标志 但是,当我试图通过$stateParams.param=false将标志切换回false时在州控制器中,似乎没有发生任何事情,且标志保持true 我做错什么了吗 编辑 这就是重定向发生的地方 app.controller("MainController", function($scope, $state) { $scope.$on('$ionicView.
$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);
}
});
});
另一次编辑
这是如何在我的应用程序配置中设置我的OtherController
状态的。请注意,我没有为MainController
设置状态,但是我显然仍然在index.html
中指定它。我还在其各自的模板文件register.html
中指定OtherController
$stateProvider
.state('register', {
url: '/register',
params: {
'reset': false
},
templateUrl: 'templates/register.html'
})
您是否像下面那样在控制器中注入
$stateParams
controller('testCrtl',
[ '$scope','$stateParams'
function($scope , $stateParams ) {
....
....
}
编辑
你错过路线了吗?如果是,那么。。。。
您需要像这样实现路由
$stateProvider.state('toState', {
templateUrl:'test.html',
controller:'stateController',
params: {
'reset': true,
}
});
然后您可以像这样导航到它:
$state.go('register', {
'reset': true
}
也许你可以这样做。使用事件$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);
}
})) 在何处执行此$stateParams.param=false;?请检查编辑!您是否检查它是否正在点击“$ionicView.beforeEnter”?是的,确实是这样,设置了一些警报来确认这一点。您是否可以添加路由配置?为什么我要将布尔值指定为字符串?我明白了。是的,当然,我在我的应用程序配置中设置了它,如我最新编辑中所示。请检查!尝试同时使用
$stateChangeStart
和$stateChangeSuccessuccess
事件,但标志似乎没有移动。我只需要再次访问该参数,并在重定向发生后将其更改回false
。在这里,我在go函数中传递了一个带有值的参数,在stateChangeStart中,我用另一个参数更改了该值,在最终视图中,我看到该值已更改