Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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/20.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-无法使输入无效(对象不支持属性或方法';$setValidity';)_Javascript_Angularjs_Forms_Angularjs Ng Model_Angularjs Validation - Fatal编程技术网

Javascript angularjs-无法使输入无效(对象不支持属性或方法';$setValidity';)

Javascript angularjs-无法使输入无效(对象不支持属性或方法';$setValidity';),javascript,angularjs,forms,angularjs-ng-model,angularjs-validation,Javascript,Angularjs,Forms,Angularjs Ng Model,Angularjs Validation,我试着做到以下几点 if ($scope.RetypePassword != $scope.resource.Password) { $scope.resource.Password.$setValidity("missmatch", false); } else { $scope.resource.Password.$setValidity("missmatch", true); } 但由于这个错误而失败 TypeError: Object doesn't support

我试着做到以下几点

if ($scope.RetypePassword != $scope.resource.Password) {
     $scope.resource.Password.$setValidity("missmatch", false);
} else {
     $scope.resource.Password.$setValidity("missmatch", true);
}
但由于这个错误而失败

TypeError: Object doesn't support property or method '$setValidity'
原因何在

密码被数据绑定到如下输入

<input type="password" ng-model="resource.Password" name="Password" />

您不应该有表单名称
资源
,因为您的模型在
资源
中已经有对象,尝试一些不同于名称的方法将解决您的问题 比如name=“myForm”

标记

<form name="myForm">
   <input type="password" ng-model="resource.Password" name="Password" />
</form>

问题是,
resource.RetypePassword
是一个范围对象(模型),这与您需要的不同。此控制器不直接暴露于作用域。但是,您可以通过父级
表单
对象按输入名称访问它

因此,如果您的HTML如下所示:

<form novalidate name="form">
    <div>
        <label>Password</label>
        <div><input type="password" ng-model="resource.Password" name="Password" /></div>
    </div>
    <div>
        <label>Confirm Password</label>
        <div><input type="password" ng-model="resource.RetypePassword" name="RetypePassword" /></div>
    </div>
</form>
检查一下原理的演示


演示:

$scope.resource
表单模型吗?@dcodesmith很抱歉,我没有回答这个问题,但它只是绑定到某些输入字段的对象,在使用表单名称的示例中,我完全忽略了这一点。@Robert我添加了一个答案。.比他早两分钟。.请将鼠标悬停在1小时前回答的
文本上进行检查。
文本。.您将知道谁先添加了答案
<form novalidate name="form">
    <div>
        <label>Password</label>
        <div><input type="password" ng-model="resource.Password" name="Password" /></div>
    </div>
    <div>
        <label>Confirm Password</label>
        <div><input type="password" ng-model="resource.RetypePassword" name="RetypePassword" /></div>
    </div>
</form>
if ($scope.resource.RetypePassword != $scope.resource.Password) {
    $scope.form.Password.$setValidity("missmatch", false);
} else {
    $scope.form.Password.$setValidity("missmatch", true);
}