如何在自定义指令中的某些标记上设置ng-change属性?

时间:2015-09-21 17:03:19

标签: angularjs javascript-events angularjs-directive

我有一个自定义指令,其中包含<select><input>

如果我提出<my-custom-directive ng-change="vm.someFunction()">,如何将ng-change添加到指令模板中标记内的<select>

2 个答案:

答案 0 :(得分:3)

您可以使用&#39;&amp;&#39;将功能传递到指令的范围。因此,在定义指令时,请按以下方式指定范围:

scope: {
'myChangeFunction' : '&'
}

在您的模板中,您可以使用它

<select ng-change="myChangeFunction()">

在您的客户端代码中,您可以指定:

<my-custom-directive my-change-function="vm.someFunction()">

答案 1 :(得分:0)

如果我没有误解您的问题,您希望将指令ng-change添加到指令模板中的select。只需将ng-change添加到select并在指令控制器中处理事件。

指令模板:

<select ng-model="model.id" ng-change="selectChange()">
  <option value="0">Zero</option>
  <option value="1">One</option>
 <option value="2">Two</option>

指令:

  app.directive("testDirective", function(){
   return{
    restrict: 'E',
    templateUrl: 'testDirective.html',
    controller: function($scope){
        $scope.selectChange = function(){
          console.log('select change!');
        }
     }
   }
  })

看看这个羽毛球员。

http://plnkr.co/edit/U184Z8rSjxa6NFEw0n4t?p=preview