2015-04-23 100 views
1

問題:在瀏覽器重新加載角度運行控制器兩次

我有一個Angular應用程序,它工作正常。它有4個主頁面控制器,它們在ng-view中加載。所有控制器都連接到通過ngRoute路由的頁面。

當應用程序第一次加載時,它工作正常。但是,如果我轉到這些頁面中的任意一頁並按瀏覽器的刷新(f5),控制器將被調用兩次。他們有什麼理由爲什麼他們在第一次運行一次,在重新加載時運行兩次?

問候, 伊什

+0

請分享您的代碼 – Fisherman

+0

有些代碼會幫助我們調試。 – Zee

回答

0

常見的問題,您必須已加載UI的路由器上,並在HTML文件控制器。只要從HTML文件中刪除它,總是使用路由器來注入控制器,這只是一個好習慣。

0

對不起,這是一個帶有回報的承諾的問題。

登錄在我下面的代碼

.... 
$scope.someMethod().then(function(_data){ 
... 
    if (something not related to _data) { 
     $route.reload(); 
    } else { 
     $location.path("xcxcxcxcxcx"); 
    } 
... 
}) 
在一些方法

後..

$scope.something = function(){ 
    var deff = $q.defer(); 
    .... 
    APICALL.callAPI(xxxxx).then(function(data){ 
     deff.resolve(data); 
    }, function(error) { 
     deff.reject(); 
    });   
    return deff.promise; 
}; 

最後返回deff.promise返回的執行早前方法就跑$ route..reload ();

我不是100%確信,但除去

回報deff.promise;

解決了這個問題。