清除特定视图的$ stateParams

时间:2015-10-14 13:33:17

标签: angularjs ionic-framework angular-ui-router

在我的Ionic应用程序中,我在home状态下将参数定义为null。因此,当此参数定义为true时,会执行某些操作,在这种情况下会出现模式。

问题是,当我切换到另一个状态并返回时,此参数将其值保持为true

如何清除特定视图的特定参数?

这是一段代码:

if ($stateParams.watchTutorial === true) {
  $rootScope.$broadcast('startTutorial');
  $stateParams.watchTutorial = null;
}

试图将其设置为null但不起作用。

要继续,请导航:

主页 - >查看1 - >点击按钮 - >主页(帕拉姆:{watchTutorial: true})。很棒,回家和莫代尔出现。继续在家里航行..

主页 - >查看2 - >返回首页(没有特定的参数),watchTutorial = true无论如何都会出现模态屏幕。它不应该。

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:1)

我会监听$ stateChangeSuccess事件,然后对可用信息做出反应。

$rootScope.$on('$stateChangeSuccess', 
function(event, toState, toParams, fromState, fromParams){
  if(fromState == "[the_state_of_view_2]"){
    toParams.watchTutorial = false;
    //or toParams = {}
  }else{
    if ($stateParams.watchTutorial === true) {
      $rootScope.$broadcast('startTutorial');
      $stateParams.watchTutorial = null;
    }        
})

答案 1 :(得分:1)

好的,由于你的答案@Andre Kreinbring,我解决了这个问题。

这使得这份工作:

$rootScope.$on('$stateChangeSuccess',
 function(event, toState, toParams, fromState, fromParams) {
   if(toState.name == 'app.home') {
     if(toParams.watchTutorial === true) {
       $rootScope.$broadcast('startTutorial');
       toParams.watchTutorial = false;
     }
   }
 });