【问题标题】:Clear $stateParams for specific view清除特定视图的 $stateParams
【发布时间】:2015-10-14 13:33:17
【问题描述】:

在我的 Ionic 应用程序中,我在home 状态下将参数定义为默认值 null。所以当这个参数定义为true时,会执行一些动作,此时会出现一个modal。

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

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

这是一段代码:

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

尝试将其设置为 null,但没有成功。

继续,导航:

主页 -> 查看 1 -> 点击按钮 -> 主页(参数:{watchTutorial: true})。太好了,回家并出现模态。继续在家里导航..

主页 -> 查看 2 -> 返回主页(未指定参数),watchTutorial = true 无论如何都会出现模式屏幕。它不应该。

有什么想法吗?谢谢。

【问题讨论】:

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


    【解决方案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;
        }        
    })
    

    【讨论】:

    • 该事件也在 $scope 中被触发。
    • 首先,谢谢安德烈,这对其他州有效吗?因为home 是主要状态,并且许多后退操作都去那里,所以我宁愿有一个全局解决方案而不是在这个事件中添加每个状态。
    • 您也可以查看toState 并在toState == "Home" 时做出反应
    • 艾特,我会试试这段代码并回复你,谢谢。
    【解决方案2】:

    好的,感谢您@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;
         }
       }
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多