2012-08-13 133 views
7

請找我寫的指令之下,AngularJS指令不能正常工作

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

我加入這個指令我在下面的方式模塊,

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

我在模板中使用這個指令在以下格式,

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

但是,我既沒有看到任何警報或類的反應越來越添加。 有人可以幫助我嗎? 由於某些依賴性,我不想使用'ng-class',但想爲ng-repeat的第一個元素添加class ='active'。

任何幫助將不勝感激。提前致謝。

回答

34

聲明指令時應該有駱駝案例名稱(setFirstActive)。

請參閱developer guide on directives

指令具有駱駝名稱,如'ngBind'。可以通過將駱駝案例名稱轉換爲具有以下特殊字符的蛇情況來調用該指令:, - 或_。可選地,該指令可以用x-或數據作爲前綴,以使其符合HTML驗證器。這裏列出了一些可能的指令名稱:ng:bind,ng-bind,ng_bind,x-ng-bind和data-ng-bind。

+0

感謝您的回覆Artem。只有一個查詢,沒有設置 - 首先有效的名字可能嗎?我們已經有可能的指令名稱,如ng-bind,x-ng-bind,它們與set-First-Active類似。 – 2012-08-18 11:09:50

+1

@Abdul當你聲明指令時,它被命名爲'setFirstActive'。當你調用指令時,你可以使用'set-first-active','set_first_active','數據優先','x-first-active'。 – 2012-08-18 12:20:01

+0

現在明白了。感謝您再次澄清它。 – 2012-08-18 18:17:52