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