在我的角度应用程序中,我有一个带有一组链接的菜单,我已将链接放在一个角度指令中,我想使用当前位置来确定链接是否处于活动状态,然后向其中添加一个css类。
到目前为止,我所做的是: (剥离相关的东西)
angular.module(‘myNavigation’).directive(‘navItem’, ['$location', function($location) {
console.log($location.absUrl());
console.log($location.path());
return {
restrict: ‘EA’,
scope: true,
link: function (scope) {
isCurrentLink = angular.equals(scope.item.href,$location.absUrl());
},
template: ‘<a ng-href=”{{item.href}}” ng-class=”{active:isCurrentLink}”>{{item.name}}</a>”
}
}]);
这样可以正常工作,但前提是我在导航数据中包含完整的网址,包括域名等。但我的指令收到的导航数据中的网址不包含域名/协议等。
然后第一个console.log给我完整的URL,但第二个返回一个空字符串。
出于某种原因,我无法在我的指令中访问$location.path()
。我做错了什么?
顺便说一下,我有一个路径,我的应用程序不在根文件夹的默认页面上。
更新
我刚刚发现$ location.path()在哈希(#)之后返回url的一部分,我希望它返回没有protocol,servername和serverport的url部分。
所以当我去 https://stackoverflow.com/posts/25894149/ 时,我想要帖子/ 25894149 / 。
我可以使用$ location来实现这个目标吗?
答案 0 :(得分:1)
我发现$location
无法提供此信息。
当您加入$window
时,您可以要求$window.location.pathname
,这正是我所需要的。
例如,当你的网址是:
网址:http://stackoverflow.com/questions/25894149/#something
$window.location.pathname
将返回 / questions / 25894149 /