3

私は次のことをしようとします

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" />
4

2 に答える 2

1

resourceに既にオブジェクトがあるモデルがあるため、フォーム名は使用しないresourceでください。名前とは異なるものを試してみると、name="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);
}
于 2015-05-29T08:42:19.203 に答える
1

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

原理のデモンストレーションを少し確認してください。

デモ: http://plnkr.co/edit/tVFlytaW2WVJfLdiq4o2?p=preview

于 2015-05-29T08:44:30.523 に答える