Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法修改控制器中的$stateParam参数_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

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中,我用另一个参数更改了该值,在最终视图中,我看到该值已更改