单击事件不在ng-repeat内的Attribute指令中触发

时间:2015-04-13 18:34:27

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

<tr ng-repeat="school in schools">
 <td>{{$index+1}}</td>
 <td>
    <span school-edit>{{school.name}}</span>
 </td>
</tr>

我的指示

app.directive("school-edit",function()
{
    return {
        restrict    : "A",
        link        : function(scope,el,atr)
                    {
                        el.on("click",function()
                        {
                            alert("called");
                        });

                    }
    };
});

点击事件未触发 我想指令是在ng-repeat填充表之前注册的

3 个答案:

答案 0 :(得分:4)

working plinker http://plnkr.co/edit/XARGhQkZHgOcGZvyiD33?p=preview

OP,看来您的命名约定不正确。避免在定义指令时使用破折号。选择camel cased .. myDirective在js然后在html调用作为my-directive。

定义一个指令,这可以通过使用我定义的示例来工作。

 app.directive('school', [function() {
  return {
    restrict: 'A',
    link: function(scope, elem, attrs) {

      elem.bind('click', function() {

      alert("g");
      });
    }
  }
}]);

这将为你做到。

<div school>click me!</div>

答案 1 :(得分:1)

如果有人仍在寻找答案,以下是正确的方法(注意命名惯例的不同):

app.directive("schoolEdit",function()
{
return {
    restrict: "A",
    link    : function(scope,el,atr)
            {
              el.on("click",function()
              {
                 alert("called");
              });
            }
          };
});

答案 2 :(得分:0)

您正在寻找的是onclick。

app.directive("school-edit",function()
{
    return {
        restrict:"A",
        link:function(scope,el,atr)
             {
                 el.onclick = function(){
                    alert("called");
                 };
             }
    };
});