1

<input>フォーム検証で奇妙な/紛らわしい動作に遭遇しました。

基本的に、入力に無効な数値 ( に設定) が含まform.$validfalseている場合、モデル値が に変更された場合null$validフラグは に戻されtrueますが、入力フィールドに表示される値は変更されません。

説明のためにプランカーを作成しました。次の手順に従って再現します。

  1. セルの値を空に変更します。
  2. 保存リンクをクリックします (nullモデルに保存されます)
  3. 数字以外の文字を入力してください。
  4. リセットリンクをクリックします (nullモデルから復元します) 。
  5. 入力フィールドが無効ではなくなりましたが、無効な文字がまだ残っていることを確認してください。

これはバグですか、それとも何か間違っていますか?

編集:

私はそれがバグだと信じ始めています。""の値を強制する別のディレクティブを導入して「修正」しましたnull。これは、「修正」を加えた上記のプランカーのフォークです。

EDIT2:

これは v1.3+ で修正されました

4

2 に答える 2

0

コードは正常に動作していますが、app.js で検証チェックを追加するのを忘れていました

 this.save = function(){
      if($scope.mainForm.$valid && !this.get() == ""){
          old_num = num;
      }
 };

フォームが有効な場合にのみ、値を保存する必要があります。

ただし、保存が機能するためにはフォーム全体が有効である必要があるため、これは完全な証明ソリューションではありません。アルゴリズムをさらに改善するには、個々のモデルの妥当性をマークし、個々のモデルの妥当性を確認することをお勧めします。

それが役に立てば幸い

于 2014-10-14T03:32:40.517 に答える