2015-02-03 3 views
1

Я хочу, чтобы установить значение индекса, если DIV имеет класс «активный»Angularjs - установите значение, если DIV имеет класс

<div class="tab-pane active" id="tab1"> 
<div class="tab-pane" id="tab2"> 

Что-то вроде этого:

<div class="tab-pane active" id="tab1" ng-class="(this).hasClass('active')?$index = 1: ''"> 

Не знаете, как подойти к этому ,

+1

Что такое '$ index' здесь? – dfsq

+1

@dfsq $ index - это просто значение, которое я хочу установить, если div содержит класс 'active' – Jack

+0

Не знаю, зачем вам это нужно, но вы можете добиться его, написав специальную директиву. – dfsq

ответ

2

Насколько я понимаю, вы хотите, чтобы свойство set scope указывало индекс активной вкладки. В этом случае, если вкладка #tab1 выбрана, то $scope.$index должен быть 1 и т.д.

Поскольку чтение атрибута класса означает manupilations с DOM лучшим местом для этой функции является пользовательской директивой. Довольно удобно, что директивы могут быть привязаны к именам классов (restrict: 'C'). Тогда наивная реализация могла бы быть:

app.directive('active', function() { 
    return { 
     restrict: 'C', 
     link: function(scope, element) { 
      scope.tabIndex = element[0].id.replace('tab', ''); 
     } 
    }; 
}); 

Обратите внимание, что я установил tabIndex собственность, чтобы не путать его с ngRepeat$index переменной.

Вот небольшая демонстрация этого подхода: http://plnkr.co/edit/y6Mj4kFCq2fS5VdCjSsb?p=preview

+1

Это здорово! – Jack