2016-12-02 23 views
0

我想知道爲什麼之後我不能使用定位服務即使我用它來改變我的看法改變路徑 -

$scope.$appy() or $scope.apply; 

我做研究之前,張貼我的問題。我得到了類似問題的結果,這些結果都不符合我的情況。

我不想使用定時器功能實現在鏈接中指定的同樣喜歡,因爲它的CPU密集型: angularjs path not changing even after apply

在我的應用程序的奇怪行爲,我能與下面的其它腳本代碼來改變位置:

$location.path("authenticate").replace(); 
$scope.$apply(); 

OR

$location.path("authenticate").replace(); 
$scope.apply; 

這沒有任何問題工作正常。

唯一不同的是:以上時,它就會沒有任何事件觸發執行的代碼工作正常,但它需要的空白頁,如果我用上面的代碼按鈕單擊事件是這樣的:

<li data-ng-click="logout()"><a data-ng-href="#">Sign Out</a></li> 

任何幫助將是很有幫助。

+0

你需要添加斜線到您的路徑'$ location.path(「/身份驗證」)' – FabioG

+0

我已經嘗試已經,沒有運氣 – Sagar

回答

0

如果你正在嘗試一些異步執行後,執行代碼(註銷時發生,等等) - 你的角引擎可能不瞭解操作完成情況。

使用scope.apply內的具體操作。另外要注意消化過程,這可以發射例外

$scope.$apply(function(){ 
    if(!$scope.$$phase) { 
     $location.path('authenticate'); 
    } 
}); 
+0

我希望它可以工作,但給出以下錯誤: [INFO:CONSOLE(118 )]「錯誤:[$ rootScope:inprog] http://errors.angularjs.org/1.5.8/$rootScope/inprog?p0=%24apply – Sagar

+0

似乎您還需要額外檢查rootScope是否處於摘要階段'! $ rootScope。$$ phase'。在你需要將它注入爲依賴項之前。 – VadimB

0

嘗試封裝$ scope.apply(內通話),像這樣:

$scope.$apply(function(){ 
    $location.path('authenticate'); 
}); 
+0

給出錯誤: 「TypeError:$ scope.apply不是函數」 – Sagar

+0

對不起,我的部分應該是$ scope。$ apply(function(){}) – CraigR8806

+0

有什麼區別?我沒有看到函數的定義有任何改變。 – Sagar

相關問題