2017-07-29 68 views
1

因此,當用戶執行這3個事件中的任何一個時,我想更新MongoDB中的某些內容。我在這裏搜索了堆棧溢出,並獲得了一些告訴我使用$ stateChangeStart的信息。所以,我寫了下面的線我的app.config結束後:如何在用戶點擊瀏覽器的後退按鈕/刷新按鈕/關閉按鈕時更新數據庫中的內容?

.run(['$state', '$cookies', '$rootScope', function($state, $cookies, $rootScope) { 
    $rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) { 
     console.log('e', e); 
     console.log('toState', toState); 
     console.log('toParams', toParams); 
     console.log('fromState', fromState); 
     console.log('fromParams', fromParams); 
    }); 
}]); 

的問題是,瀏覽器會只到$ rootScope $上。之後,console.log行不會被執行。如果有人能告訴我如何解決這個問題,我會非常感激。在此之後,我想通過以下方式來解決我在數據庫中更改某些內容的問題:

1 - 我將添加一些屬性到stateNumber等狀態。

2 - 然後使用該財產,將有如果(toState.stateNumber == 1)

3 - 然後根據toState.stateNumber爲1或2或什麼的,我會更新數據庫

有關如何解決這些問題的任何想法。

+0

你試過$ locationChangeSuccess而不是$ stateChangeStart? –

+0

@pedrumgolriz是的,先生!我正在嘗試它。它不會產生任何錯誤。但是當我做console.log($ location.path())時,沒有記錄,而console.log($ rootScope.actualLocation)日誌未定義。爲什麼? – psvs

+0

我相信它是因爲它在.run中,試着直接粘在控制器上。 –

回答

0

以下是我做到了我的應用程序:

$rootScope.$on('$locationChangeSuccess', function() { 
    $rootScope.actualLocation = $location.path(); 
}); 

$rootScope.$watch(function() {return $location.path()}, function (newLocation, oldLocation) { 
    if($rootScope.actualLocation === newLocation) { 
      //post to mongo 
    } 
}); 
相關問題