1

私はAngularJSが初めてです。私はいくつかの検証を実装しようとしています。テストとして、基本的なログイン画面を見ています。そのログイン画面のコードは次のようになります。

<style type="text/css">
  input.ng-invalid.ng-dirty { background-color: red; color:white; }
</style>

<form novalidate name="loginForm" role="form">
  <div ng-show="(isDataValid==false)" class="ng-hide">
    Please correct the errors on the page.
  </div>

  <div>
    <label for="username">Username</label>
    <input type="text" id="username" placeholder="Username" ng-model="username"
           required>
  </div>

  <div>
    <label for="password">Password</label>
    <input type="password" id="password" placeholder="Password" ng-model="password"
           required>
  </div>

  <button type="submit" ng-click="formSubmit(loginForm);">Submit</button>
</form>

<script type="text/javascript">
  function loginController($scope) {
    $scope.isDataValid = null;

    $scope.formSubmit = function(f) {
      $scope.isDataValid = f.$valid;
      if (f.$invalid) {
        return;
      }

      return false;
    };
  }
</script>

ページが読み込まれると、きれいな状態になりたいです (これは機能します)。ユーザーがフィールドでの作業を開始した後に、フィールド レベルの検証が必要です (これは機能します)。ユーザーが「送信」をクリックしたときに、フィールド レベルの検証が必要です。これは部分的に機能します。

私の問題は、フィールドをまったく使用せずに「送信」を押すと、フィールドの css クラスが更新されないことです。その理由は、フィールドが「汚れていない」からだと思います。ただし、これを修正する方法がわかりません。1) 最初の要件を満たし、2) AngularJS コントロールを DOM から遠ざけるという考えに固執します。

誰も私がこれを行う方法を知っていますか?

どうもありがとう!

4

1 に答える 1