0

我有一个带有自定义验证器和 ng-messages 的输入字段来显示验证消息。

<input type="tel"
       ng-model="ctrl.phoneNumber"
       phone-number
       required />

自定义验证器很简单:

ngModel.$validators.phoneNumber = () => {
    return $iElem.intlTelInput('isValidNumber');
};

对于其他一些事件,我想手动触发验证,也很简单

$iElem.on('countrychange', () => {
    ngModel.$validate();
});

这将触发我的自定义验证器,这将再次验证数字,form.*.$error对象也将被更新,但 ngMessages 不会反映,验证消息不会以某种方式更新:/

任何的想法?

编辑:当我在该行中输入下一个输入时,ngMessages 将启动该输入和电话号码输入,并且视图已更新,但为时已晚,就像它会省略一个周期来更新视图一样

4

1 回答 1

1

由于countrychange事件不是由 angular 触发的(即在摘要循环之外),因此您需要将 validate 调用包装在$scope.$apply.

iElem.on('countrychange', () => {
  $scope.$apply(function(){
    ngModel.$validate();
  })
});

请参阅此讨论以获取解释

于 2016-05-25T12:28:48.820 回答