Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs无法自定义验证模型数组值_Javascript_Angularjs_Web - Fatal编程技术网

Javascript angularjs无法自定义验证模型数组值

Javascript angularjs无法自定义验证模型数组值,javascript,angularjs,web,Javascript,Angularjs,Web,我还没弄清楚。无论数组是否包含项,我都会尝试添加验证(如果表单提交无效,则为表单提交停用)。我尝试使用自定义指令,但在模型更新时从未调用它:( 由于角度的东西是在play应用程序模板中呈现的,并且表单没有在我的范围内定义,所以我不能简单地进行表单失效 我试图实现的是使表单无效,直到某个类别被添加到$scope.app.categories,从而停用提交按钮,该按钮也不在我的范围内 下面是代码(angular版本1.2.23): 添加 //加载应用程序发生在上面,这是控制器功能 $scope.a

我还没弄清楚。无论数组是否包含项,我都会尝试添加验证(如果表单提交无效,则为表单提交停用)。我尝试使用自定义指令,但在模型更新时从未调用它:( 由于角度的东西是在play应用程序模板中呈现的,并且表单没有在我的范围内定义,所以我不能简单地进行表单失效

我试图实现的是使表单无效,直到某个类别被添加到$scope.app.categories,从而停用提交按钮,该按钮也不在我的范围内

下面是代码(angular版本1.2.23):


添加
//加载应用程序发生在上面,这是控制器功能
$scope.addCategory=函数(){
$scope.app.categories.push({name:$scope.new.category});
$scope.new.category=“”;
}
app.directive('custom',function(){
返回{
要求:'ngModel',
链接:函数(范围、elm、属性、ctrl){
ctrl.$formatters.unshift(函数(val1、val2、val3、val4){
//即使未被调用,也希望在此处验证app.categories:(
console.log(true);
});
}
};
});

您使用的是
$formatters
,但要进行验证,您应该使用
$validators
。请尝试以下操作,而不是以
ctrl.$formatters
开头的行:

ctrl.$validators.yourValidatorName = function(modelValue, viewValue) {
    console.log("Validator is called.");
    return true; // This means validation passed.
};

您可以在中找到。也不要忘记将指令添加到HTML元素中,因此在您的情况下
。若要在验证失败时禁用提交按钮,请使用

$validators未定义-可能angular 1.2.23缺少此项?!另外提交按钮不在我的范围内,我只是一个播放模板,其中包含外部表单按钮无法更改…@xstring你说得对,验证器是在1.3中添加的,在1.2()中不可用。你知道这一点吗?@jackweirdy是的,当时终于知道了。谢谢你的回复。
ctrl.$validators.yourValidatorName = function(modelValue, viewValue) {
    console.log("Validator is called.");
    return true; // This means validation passed.
};