2014-11-01 72 views
0

我試圖從編譯函數裏面附加li的點擊事件,我可以看到ng-click存在於dom中但事件沒有被觸發。點擊事件不會觸發,當附加在指令編譯

compile:function (elem, attrs){ 

     //elem.find('li').attr('data-ng-click', 'hello()'); 
     elem.find('li').attr('ng-click', "hello($event)"); 

     return function(scope, elem, attrs) { 
      scope.hello = function ($event) { 
      console.log($event); 
      alert('click triggered') 
      };  
} 

Plnkr:http://plnkr.co/edit/o8JyJM?p=preview

+0

你能更全面地解釋你試圖完成什麼嗎?您發佈的廣告並無法全面瞭解目標。 – shaunhusain 2014-11-01 21:35:12

回答

1

只是增加其本身的屬性的指令,也不會導致其被處理。每個要在其中創建指令的元素需要通過$compile運行以創建鏈接函數,然後需要使用傳遞給它的範圍對象(通常使用$rootScope.new()創建)來調用鏈接函數。所有說的是,通常有更簡單的方法來完成你想要的只是在模板中使用ng-click(已編譯)或使用element.bind("click",function(evt){})。我也會在這裏修理一下這個plunkr。

0

範圍在指令的編譯階段不可用。它僅在鏈接階段可用。我建議你將編譯切換到鏈接功能(如果你沒有像上面代碼片段那樣的編譯功能的特定需求)。