Javascript 以编程方式验证角度形式

Javascript 以编程方式验证角度形式,javascript,angularjs,validation,Javascript,Angularjs,Validation,我有一个angular指令用作验证输入的属性 输入看起来像这样(jade) 验证器看起来像 .directive('subjectidNoprefixValidator', function () { return { require: ['^form', 'ngModel'], scope: { noprefixformat: '=subjectidNoprefixValidator' },

我有一个angular指令用作验证输入的属性

输入看起来像这样(jade)

验证器看起来像

.directive('subjectidNoprefixValidator', function () {     
    return {
        require: ['^form', 'ngModel'],
        scope: {
            noprefixformat: '=subjectidNoprefixValidator'
        },
        link: function (scope, element, attrs, ctrls) {

            scope.form = ctrls[0]; // so we can use form reference in displaying error messages
            var ngModel = ctrls[1];
            ngModel.$validators.subjectidnoprefix = function (value) { 
                var status = true;
                // removed some logic that sets status true or false
                // using   $scope.noprefixformat parameter
                return status;
            };
        }
    };
});
它很好用。但是,有时在页面操作中,会发生需要在不接触输入的情况下对输入重新触发验证的事件;一些单选按钮更改应该重新触发它并刷新验证状态(正如您所看到的,我的验证器有一个参数)

我试图通过调用页面控制器来实现它

 $scope.subjCreationForm.subjectinput.$validate(); 

但它似乎不起作用。当字段使用$validator时,会是什么情况?是否有其他方法以编程方式触发字段验证?

发现了我的问题的核心,必须手动调用$apply,这样才能实现:

           $timeout(function () {
                    $scope.subjCreationForm.subjectinput.$validate();
                });
这是我对类似问题的回答。
           $timeout(function () {
                    $scope.subjCreationForm.subjectinput.$validate();
                });