AngularJS在routeChangeStartEvent上获取编译的路由URL

时间:2014-01-04 19:09:06

标签: javascript angularjs

我正在尝试在angularJS应用中创建一个最近访问过的菜单,但我似乎无法找到一个很好的方法来获取已编译的URL routeChangeStart事件,它只是模板。

我的代码如下:

       $rootScope.$on("$routeChangeStart", function (event, next, current) {

            if ($route.current && $route.current.$$route && $route.current.$$route.controller){

                // only show 5
                if($scope.previousLocations.length == 5){
                    $scope.previousLocations.pop();
                }

                var title = $route.current.$$route.title, 
                    hasTitleAlready = false;

                // only add them once
                angular.forEach($scope.previousLocations, function(obj){
                    if(obj.title == title){
                        hasTitleAlready = true;
                        return false;
                    }
                });

                if(hasTitleAlready){
                     $scope.previousLocations.push({
                        title: title,
                        link: 'the compiled link here'
                    });
                }
            }
        });

我的模板如下:

 <ul class="recent-view">
       <li ng-repeat="loc in previousLocations"><a href="{{loc.link}}">{{loc.title}}</a></li>
 </ul>
谁有任何关于如何干净利落地完成这个想法的好主意?

1 个答案:

答案 0 :(得分:1)

如何使用$location

来自文档:

  

我应该何时使用$ location?

     

任何时候您的应用程序需要对当前URL中的更改做出反应,或者您想要在浏览器中更改当前URL。