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);
}