2014-11-01 68 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

范围在指令的编译阶段不可用。它仅在链接阶段可用。我建议你将编译切换到链接功能(如果你没有像上面代码片段那样的编译功能的特定需求)。