0
我有一個Angular應用程序分爲多個小應用程序。該系統工作非常簡單:用戶登錄,然後他可以選擇他想要使用哪個子應用程序。
我想在標題中顯示應用程序的名稱。在.run
,我有這個$rootscope
。我在這裏說的原因很簡單:用戶可以正常使用應用程序,但他也可以決定使用F5刷新頁面。這樣,我可以通過URL決定用戶正在運行的應用程序。
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
// bunch of other code
var path = $location.path();
console.log($location);
if (path.indexOf("pricelist") > -1) {
authentication.setApplication("PRICELIST");
} else {
authentication.setApplication("HUB");
}
$state.go(toState, toParams);
}
}
});
});
如果URL包含「pricelist」,它應該將應用程序名稱設置爲「PRICELIST」。但是,該語句返回false,因此它設置了錯誤的名稱。
正如你看到的,有兩個$$path
:一個正確的URL和一個只/
。正確的是包含/pricelist
的那個,但是$location.path()
似乎返回了錯誤的一個。
這裏發生了什麼?我究竟做錯了什麼?
當你製作console.log($ location)時,路徑是「/」,當你打開它時,它是對象的一個活動版本,所以它在兩者之間發生了變化。您正在使用stateChangeStart,因此尚未進行更改,這就是爲什麼 – ThibaudL
但爲什麼$ location還包含正確的URL? – Bv202
它並不是說你的控制檯是這樣工作的,第一行是靜態的,它不能改變,它在stateChangeStart中顯示。當您在控制檯中打開對象時,每個字段都是動態的,因此您可以看到新值 – ThibaudL