我有一個Angular應用程序,它工作正常。它有4個主頁面控制器,它們在ng-view中加載。所有控制器都連接到通過ngRoute路由的頁面。
當應用程序第一次加載時,它工作正常。但是,如果我轉到這些頁面中的任意一頁並按瀏覽器的刷新(f5),控制器將被調用兩次。他們有什麼理由爲什麼他們在第一次運行一次,在重新加載時運行兩次?
問候, 伊什
我有一個Angular應用程序,它工作正常。它有4個主頁面控制器,它們在ng-view中加載。所有控制器都連接到通過ngRoute路由的頁面。
當應用程序第一次加載時,它工作正常。但是,如果我轉到這些頁面中的任意一頁並按瀏覽器的刷新(f5),控制器將被調用兩次。他們有什麼理由爲什麼他們在第一次運行一次,在重新加載時運行兩次?
問候, 伊什
常見的問題,您必須已加載UI的路由器上,並在HTML文件控制器。只要從HTML文件中刪除它,總是使用路由器來注入控制器,這只是一個好習慣。
對不起,這是一個帶有回報的承諾的問題。
登錄在我下面的代碼
....
$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;
解決了這個問題。
請分享您的代碼 – Fisherman
有些代碼會幫助我們調試。 – Zee