Angular:控制触发ng-change

时间:2015-08-04 12:23:05

标签: javascript angularjs events angularjs-directive

我有一个Angular表单,它有几个我要验证的输入框,使用通用的JS函数,但需要知道触发事件的控件,以便可以应用某些规则。

(简化代码)

<input ng-model="Field1" ..... ng-change="validateMe()" />
.
.
<input ng-model="FieldX" ..... ng-change="validateMe()" />

$scope.validateMe = function() {
   // get the text of the control that fired the event

   // do the validation 

   // update something else if valid value given

}

我知道ng-click$event,但我怎么能从ng-change

开始

2 个答案:

答案 0 :(得分:1)

您可以拥有自定义指令,该指令将在自定义更改事件上调用您的控制器方法。

<强>标记

<input ng-model="Field1" my-custom-change change-method="validateMe(event)">

<input ng-model="FieldX" my-custom-change change-method="validateMe(event)">

<强>指令

app.directive('myCustomChangeEvent', function(){
  return {
    scope: {
      changeMethod = '&'
    },
    link: function(scope, element, attrs){
      element.on('change', function(event){
        scope.changeMethod({event: event});
        scope.$apply();
      });
    }
  }
})

答案 1 :(得分:0)

请勿在{{1​​}}中执行此操作。我会用属性指令代替验证。这样,您就可以完全访问相关元素,并可以根据该规则应用自定义验证规则。

ng-change