2015-11-29 89 views
1

我想用AngularJS突出顯示當前選定的菜單項。 我有這樣的HTML:ng-class爲什麼不能運行?

<li ng-repeat="m in menuLinks"> 
    <a ng-class="{active : isActive('{{m.url}}')}" href="{{m.url}}" active-link="active" onclick="closeMenu()">{{m.title}}</a> 
</li> 

而這個控制器:

$scope.isActive = function (viewLocation) { 
     alert(viewLocation); 
     if ($location.path().indexOf(viewLocation) === 0) { 
      return true; 
     } else { 
      return false; 
     } 
}; 

功能isActive()被調用,因爲警報顯示出來,但是當我檢查的元素,我得到這樣的:

<a class="ng-binding" ng-class="{active : isActive('/#/sessions')}" href="/#/sessions" active-link="active" onclick="closeMenu()">Sessions</a> 

我在這裏錯過了什麼?

回答

3

你不需要在ng-class表達,只是用這樣的:

<a ng-class="{active : isActive(m.url)}" ng-href="{{m.url}}" active-link="active" ng-click="closeMenu()">{{m.title}}</a> 

,我建議使用ng-href,而不僅僅是href和ng-click代替的onclick;)

1

$ location.path()不返回數組,而indexOf搜索數組中項目的索引。

+0

字符串有'的indexOf ()'函數,http://www.w3schools.com/jsref/jsref_indexof.asp –