2015-10-14 20 views
1

在我的Ionic應用程序中,我已經在我的home狀態中將缺省參數定義爲空。所以當這個參數被定義爲true時,會執行一些操作,在這種情況下會出現一個模式。

問題是,當我切換到另一個狀態,並返回時,此參數保持它的值爲true

如何清除特定視圖的特定參數?

這是一段代碼:

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

試圖設置爲null,但沒有奏效。

要恢復,導航:

首頁 - >查看1 - >點擊按鈕 - >首頁(帕拉姆:{watchTutorial: true})。太棒了,回家後會出現模態。繼續在家中導航..

首頁 - >查看2 - >返回首頁(沒有參數具體),watchTutorial = true反正和模態屏幕出現。它不應該。

任何想法?謝謝。

回答

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; 
    } 
    } 
}); 
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; 
    }   
}) 
+0

的事件在$範圍被炒得。 –

+0

首先,謝謝安德烈,這是否會爲其他州的工作?因爲「家」是主要的狀態,並且許多後退動作都在那裏,所以我寧願有一個全局解決方案,而不是在這個事件中添加每個狀態。 – Ariel

+0

你也可以檢查'toState'並對'toState' ==「Home」做出反應 –