在指令编译中附加时单击事件未触发

时间:2014-11-01 15:14:53

标签: angularjs

我正在尝试从编译函数内部附加li的click事件,我可以看到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

2 个答案:

答案 0 :(得分:1)

添加一个本身就是指令的属性不会导致它被处理。每个要在其中包含指令的元素都需要通过$compile来运行才能创建链接函数,然后需要使用传递给它的作用域对象调用链接函数(通常使用{{1创建) }})。所有这些说明通常有更简单的方法来完成你想要的只是使用模板中的$rootScope.new()(已编译)或使用ng-click。我也会在这里稍微修好一下。

答案 1 :(得分:0)

范围在指令的编译阶段不可用。它仅在链接阶段可用。我建议你把编译切换到一个链接函数(如果你没有像上面的代码片段那样对编译函数有特殊需要。)