如果指令在ng-repeat循环中,则指令中的bind事件不起作用

时间:2013-08-31 10:34:29

标签: angularjs

似乎每个人都在angularjs google群上睡着了:)

这是我的问题:

我在指令中有一个select,我想将一个函数绑定到该select的'change'事件。 我的问题是,当我在ng-repeat循环中使用这个指令时,对事件的绑定不再起作用了(为什么??)。

修改 在我的实际情况中,有三个或更多<select>,使用json文件中的数据创建和填充。

以下是该指令的简化版本,我也提出了plunker

angular.module('test', [])
.directive('mySelect', function() {

  var baseElt = angular.element('<select><option>1</option><option>2</option></select>');

  return {

    restrict: 'E',
    compile: function(topElement) {

      var elt = baseElt.clone();

      topElement.append(elt);

      return function(scope, element, attributes, ngModelCtrl) {

        elt.bind('change', function() {
          alert("change !");
        });

      };

    }
  }; 

});

1 个答案:

答案 0 :(得分:2)

你需要

app.directive('mySelect', function() {
    return {
        restrict : 'E',
        template : '<select><option>1</option><option>2</option></select>',
        link : function(scope, element, attributes, ngModelCtrl) {
            element.bind('change', function() {
                console.log("change !");
            });
        }
    }
});

演示:Fiddle