2012-08-13 15 views
7

A continuación la directiva que he escrito,AngularJS directiva no está trabajando

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

he añadido esta directiva para mi módulo en forma de abajo,

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

que utilizan esta directiva en mi plantilla en el siguiente formato,

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

Sin embargo, yo no veo ninguna respuesta de alerta ni clase es cada vez adicional. ¿Puede alguien ayudarme con esto? Debido a alguna dependencia, no quiero usar 'ng-class' pero quiero agregar class = 'active' para el primer elemento de ng-repeat.

Cualquier ayuda sería muy apreciada. Gracias por adelantado.

Respuesta

34

Al declarar la directiva debe tener el nombre de camel case (setFirstActive).

Ver developer guide on directives.

Las directivas tienen nombres de camello como 'ngBind'. La directiva se puede invocar traduciendo el nombre de la caja de camello al caso de serpiente con estos caracteres especiales:, -, o _. Opcionalmente, la directiva puede tener el prefijo x- o data- para que sea compatible con el validador de HTML. Aquí hay una lista de algunos de los posibles nombres de directivas: ng: bind, ng-bind, ng_bind, x-ng-bind y data-ng-bind.

+0

Gracias por la respuesta Artem. Solo una consulta más, no está establecida, ¿es posible el primer nombre activo? Ya tenemos posibles nombres de directivas como ng-bind, x-ng-bind que son similares a set-First-Active. –

+1

@Abdul Cuando declaras una directiva se llama 'setFirstActive'. Cuando invoca una directiva, puede usar 'set-first-active', 'set_first_active', 'data-first-active', 'x-first-active'. –

+0

Entendido ahora. Gracias por aclararlo una vez más. –

Cuestiones relacionadas