2014-03-27 40 views
7

我想在Angular JS上聽$ $「$ locationChangeStart」事件,並防止在某些情況下發生事件。 一旦我做event.preventDefault(),$ on「$ locationChangeStart」事件再次被激發。 這是一個角JS錯誤?

$rootScope.$on "$locationChangeStart", (event, next, current) -> 
    if doNotLeave 
    event.preventDefault() 

由於提前, Steff

+0

event.stopPropagation()是做什麼的? – Ashesh

+0

當發生這種情況時,你使用了什麼路由? –

+0

這有沒有解決? – Starfs

回答

4

歐凱,我已經看到了一個非常類似的情況,發現一個可能的原因。 Angular(或我們自定義的路由段路由,不確定哪個)有時會在路由處理它之後修剪URL。 嘗試記錄nextcurrent並查看您正在處理的是什麼路線。在我們的案例中,變化是從這個http://wof/Admin#/someRoutehttp://wof/Admin#/someRoute/(請注意添加斜槓)。在我們解釋了這個之後 - 它工作正常。

+0

非常有幫助的問題和答案。我相信只有使用本地腳本設置哈希值時纔會出現此問題。使用角度$ location對象永遠不會雙倍下降(並且總是添加斜槓)。 –

+0

經過進一步審查,我沒有看到斜線,而是一個雙重磅的標誌。 –

+0

我正在經歷與您在此描述的完全相同的問題。我想知道你的解決方案是什麼時候你說「一旦我們解決了這個問題」,這意味着你是如何阻止它加入斜槓的呢? – Starfs