2015-11-29 3 views
1

Я хочу выделить текущий выбранный пункт меню с помощью AngularJS. У меня есть этот HTML:Почему не работает ng-класс?

<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 –

Смежные вопросы