angularjs - 无法使输入无效(对象不支持 属性 或方法“$setValidity”)
angularjs - not able to invalidate input (Object doesn't support property or method '$setValidity')
我尝试执行以下操作
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'
可能是什么原因?
resource.Password 数据绑定到这样的输入
<input type="password" ng-model="resource.Password" name="Password" />
您不应该使用表单名称 resource
,因为您的模型已经在 resource
中包含对象,尝试一些与名称不同的名称将解决您的问题
喜欢名字="myForm"
标记
<form name="myForm">
<input type="password" ng-model="resource.Password" name="Password" />
</form>
代码
if ($scope.RetypePassword != $scope.resource.Password) {
$scope.myForm.Password.$setValidity("missmatch", false);
} else {
$scope.myForm.Password.$setValidity("missmatch", true);
}
问题是 resource.RetypePassword
是一个范围对象(模型),这与您需要的 ngModelController
不一样。该控制器不直接暴露给作用域。但是,您可以通过输入名称的父 form
对象访问它。
因此,如果您的 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>
那你就可以做到了
if ($scope.resource.RetypePassword != $scope.resource.Password) {
$scope.form.Password.$setValidity("missmatch", false);
} else {
$scope.form.Password.$setValidity("missmatch", true);
}
看一下原理演示
我尝试执行以下操作
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'
可能是什么原因?
resource.Password 数据绑定到这样的输入
<input type="password" ng-model="resource.Password" name="Password" />
您不应该使用表单名称 resource
,因为您的模型已经在 resource
中包含对象,尝试一些与名称不同的名称将解决您的问题
喜欢名字="myForm"
标记
<form name="myForm">
<input type="password" ng-model="resource.Password" name="Password" />
</form>
代码
if ($scope.RetypePassword != $scope.resource.Password) {
$scope.myForm.Password.$setValidity("missmatch", false);
} else {
$scope.myForm.Password.$setValidity("missmatch", true);
}
问题是 resource.RetypePassword
是一个范围对象(模型),这与您需要的 ngModelController
不一样。该控制器不直接暴露给作用域。但是,您可以通过输入名称的父 form
对象访问它。
因此,如果您的 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>
那你就可以做到了
if ($scope.resource.RetypePassword != $scope.resource.Password) {
$scope.form.Password.$setValidity("missmatch", false);
} else {
$scope.form.Password.$setValidity("missmatch", true);
}
看一下原理演示