2012-08-13 8 views
7

Poniżej znajduje dyrektywy, które napisałem,angularjs dyrektywa nie działa

angular.module('netVogue.directives', []). 
    directive('set-First-Active', function() { 
     return function(scope, element, attrs){ 
      alert('sample'); 
      element.addClass("active");  
     }; 
    }); 

Dodałem tę dyrektywę do mojego modułu w poniższy sposób,

angular.module('netVogue', ['netVogue.filters', 'netVogue.services', 'netVogue.directives']); 

użyłem tej dyrektywy w moim szablonie w następującym formacie:

<div class="item" ng-repeat="viewPrintcampaign in viewPrintcampaigns" ng-init="first=$first" set-First-Active> 
</div> 

Nie widzę jednak żadnej reakcji na alert lub zajęcia dodany. Czy ktoś może mi w tym pomóc? Z powodu pewnej zależności nie chcę używać "ng-class", ale chcę dodać class = 'active' dla pierwszego elementu ng-repeat.

Każda pomoc zostanie bardzo doceniona. Z góry dziękuję.

Odpowiedz

34

Deklaracja dyrektywy powinna mieć nazwę wielbłąda (setFirstActive).

Zobacz developer guide on directives.

Dyrektywy mają nazwy wielbłądów, takie jak "ngBind". Dyrektywę można przywołać, tłumacząc nazwę przypadku wielbłąda na wąż z tymi znakami specjalnymi:, -, lub _. Opcjonalnie do dyrektywy można dodać przedrostek x- lub data-, aby była zgodna z walidatorem HTML. Oto lista niektórych możliwych nazw dyrektyw: ng: bind, ng-bind, ng_bind, x-ng-bind i data-ng-bind.

+0

Dzięki za odpowiedź Artem. Jeszcze jedna kwerenda, nie jest ustawiona - możliwa jest nazwa pierwszej aktywnej? Mamy już możliwe nazwy dyrektyw, takie jak ng-bind, x-ng-bind, które są podobne do set-First-Active. –

+1

@Abdul Kiedy deklarujesz dyrektywę, nazywa się ona "setFirstActive". Po wywołaniu dyrektywy można użyć "set-first-active", "set_first_active", "data-first-active", "x-first-active". –

+0

Rozumiem. Dziękuję za wyjaśnienie tego jeszcze raz. –