Javascript 模型得到';未定义';当$setValidity设置为false时

Javascript 模型得到';未定义';当$setValidity设置为false时,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有一个带有一个输入字段的表单,当值更改时,我使用$setValidity验证该输入。但问题是,当$setValidity设置为false(无效)时,模型不再更新,它保留值“undefined” 这是我的HTML: <form name="frmEnrollPaymentPlan" novalidate autocomplete="off"> <div class="form-group" ng-class="{'has-error':(frmEnrollPaymentP

我有一个带有一个输入字段的表单,当值更改时,我使用$setValidity验证该输入。但问题是,当$setValidity设置为false(无效)时,模型不再更新,它保留值“undefined”

这是我的HTML:

<form name="frmEnrollPaymentPlan" novalidate  autocomplete="off">
  <div class="form-group" ng-class="{'has-error':(frmEnrollPaymentPlan.dwnAmt.$invalid && !frmEnrollPaymentPlan.dwnAmt.$pristine)||frmEnrollPaymentPlan.dwnAmt.$error.validateDownPaymentAmount}">
    <label>Downpayment</label>
    <input type="text" class="form-control" name="dwnAmt" ng-model="EnrollPaymentPlanViewModel.DownPaymentAmount" required ng-change="downPaymentChanged()" ng-model-options="{allowInvalid: true}">
    <span ng-show="frmEnrollPaymentPlan.dwnAmt.$error.validateDownPaymentAmount" ng-class="{'error':frmEnrollPaymentPlan.dwnAmt.$error.validateDownPaymentAmount}">Cannot be less than down payment amount</span>
  </div>
</form>

头期款
不能小于首付款金额
下面是我的javascript代码:

$scope.downPaymentChanged = function () {
if (!isNaN($scope.EnrollPaymentPlanViewModel.DownPaymentAmount)) {
    var downPaymentAmount = parseFloat($scope.EnrollPaymentPlanViewModel.DownPaymentAmount);
    var minDownPaymentAmount = parseFloat($scope.EnrollPaymentPlanViewModel.MinDownPaymentAmount);

    if (downPaymentAmount < minDownPaymentAmount) {
        $scope.frmEnrollPaymentPlan.dwnAmt.$setValidity("validateDownPaymentAmount", false);    
    }
    else {
        $scope.frmEnrollPaymentPlan.dwnAmt.$setValidity("validateDownPaymentAmount", true);   
    }
}
$scope.downPaymentChanged=函数(){
如果(!isNaN($scope.EnrollmPaymentPlanViewModel.DownPaymentAmount)){
var downPaymentAmount=parseFloat($scope.EnrollPaymentPlanViewModel.downPaymentAmount);
var minDownPaymentAmount=parseFloat($scope.EnrollPaymentPlanViewModel.minDownPaymentAmount);
如果(首付金额

}

您的模型不再更新是什么意思?我尝试了上面的代码,发现$scope.EnrollPaymentPlanViewModel.DownPaymentAmount即使在有效性为false之后仍在获取新值。@noveyak,实际上问题在于我使用的AngularJS v1.3.0版本的AngularJS角度版本,但在AngularJS v1.2.26上工作正常,那么,为什么setValidity不在v1.3.0上运行,itHmm的替代方案是什么呢?祝你好运。我还是不太确定我在这里设置的这个小玩意儿出了什么问题。代码似乎按预期运行。