我已将此添加到我的侧导航控制器中:
if($location.path() == '/goals') {
$scope.goals_active = true;
}
这非常合适,并将活动类应用于ng-class
。
但是,我现在遇到的问题是id。
即。 /goals/b2dcf461-56f6-f812-bed0-538e1603a595
如何在Angular(并在必要时使用$ location)告诉我的应用程序,不仅在路径为$scope.goals_active
时将true
设置为/goals
,还要/goals/:id
1}}?
我需要某种*
运算符,但不知道这是怎么回事。
答案 0 :(得分:1)
只需使用正则表达式:
/\/goals(\/.*)?/.test($location.path());
以下是一个快速代码段,显示了测试代码的实际效果:
var urls = ['/goals', '/goals/', '/goals/12345'];
urls.forEach(function(url){
var matches = /\/goals(\/.*)?/.test(url);
document.write("url: " + url + " [" + matches + "]");
document.write("<br />");
});
&#13;
答案 1 :(得分:0)
if($location.path().indexOf("/goals") >= 0)
应与其中的/目标匹配。
答案 2 :(得分:0)
如果您认为自己没有像/goalsSomething
那样不的网址,那么您可以这样做:
if($location.path().match('/goals')) {
$scope.goals_active = true;
}
或斯科特建议的。
答案 3 :(得分:0)
您最安全的路线可能是使用正则表达式:
if( /\/goals(\/.*)?/.test($location.path()) ) { $scope.goals_active = true; }
您也可以使用indexOf,但是当您体验带有&#39; / goalsasdf&#39;等其他文字的路线时,会开始变得更加复杂。 There are also a number of other ways to do this, with increasing complexity