1
我想編寫一個Angular服務來跟蹤訪問的URL在單個頁面內使用ngRoute
模塊的Angular應用程序。因此,我訂閱$routeChangeStart
事件和回調中查詢$location.url()
功能:在初始化Angular應用程序後立即註冊事件偵聽器
angular
.module("myApplication")
.factory("visitedUrls", visitedUrls);
visitedUrls.$inject = ["$rootScope", "$location"];
function visitedUrls($rootScope, $location) {
return {
registerListener: function() {
$rootScope.$on("$routeChangeStart", function() {
var url = $location.url();
// ...
});
}
};
}
然而,上述方法將不會註冊事件偵聽器,直到該服務已經由依賴注入,第一次解決 - 這太遲了。我也想跟蹤之前訪問過的所有網址。
我目前的解決方法得到角注射器的保持和調用registerListener
方法應用已自舉後,立即:
$angular.element(document).ready(function() {
angular.bootstrap(document, ["myApplication"]);
var visitedUrls = angular.element(document).injector().get("visitedUrls");
visitedUrls.registerListener();
});
我敢肯定有一個更好的方法來附加一個事件監聽器(從內一個服務)到$rootScope
剛剛初始化一個應用程序,對吧?
就這麼簡單。謝謝! – 2014-10-29 15:20:14