2015-11-20 27 views
2

我在Angularjs中有一個頁面,我使用routeProvider來控制它們的頁面和URL。我routeProvider定義(的一部分)看起來是這樣的:如何檢查我在哪個頁面上,或者哪個是當前頁面的控制器?

$routeProvider.when("/", { 
    redirectTo: "/Overview" 
}).when("/Overview", { 
    controller: "OverviewController", 
    templateUrl:"template/overview.html" 
}).when("/Group", { 
    controller: "GroupController", 
    templateUrl:"template/group.html" 
}); 

OverviewController顯示標記爲每個組在谷歌地圖,然後GroupController顯示所選組中的每個用戶標記。

由於用戶經常更改其位置或狀態,因此GroupController中的數據每隔一段時間都會刷新一次。

dataFactory.getUsers($routeParams.id); 
$interval(function(){ 
    dataFactory.getUsers($routeParams.id); 
}, 60*1000); 

在這種情況下的getUsers()方法將通過Ajax獲取數據,然後調用適當的方法,以顯示地圖上的標記。

當您進入/Group頁面一次,然後導航回到/Overview時,會出現該問題。間隔持續執行,並且總覽上的標記將被先前查看組中用戶的標記覆蓋。

我想在$interval調用中的函數內添加一個條件,這將檢查我們是否在/Group頁面上。我將如何以角度來做到這一點? (而不是檢查window.location.href字符串)

回答

0

您可以使用$ routeChangeStart來跟蹤該網頁已被重定向到其他頁面。

$scope.$on('$routeChangeStart', function(next, current) { 
    ... you could cancel your interval here ... 
}); 

OR

您可以使用任何的以下的跟蹤定位的改變。

$ locationChangeStart - 在位置視圖模型和瀏覽器URL同步之前觸發。 $ locationChangeSuccess - 位置視圖模型和瀏覽器URL同步後觸發。

$scope.$on("$locationChangeSuccess",function(event) { 
    ... you could cancel your interval here ... 
}); 
相關問題