8

この質問のように、が trueの場合に.errorフォーム フィールドの親を追加したいと思います。.control-groupscope.$invalid

ただし、フォーム名を次のようにハードコーディングすると、ng-class="{ error: formName.fieldModel.$invalid }"これを別のフォームで再利用できなくなります。さらに、この宣言をどこでも繰り返すのは避けたいと考えています。

次のようなディレクティブが機能すると考えました。

<div class="control-group" error-on="model1, model2">
  <input ng-model="model1">
  <input ng-model="model2">
</div>

そのため、 model1ormodel2が有効でない場合.control-group.error追加されます。

ここでの私の試み。モデル名を指定して、ディレクティブからモデルにアクセスすることは可能ですか?

より良いアプローチがあれば、私もそれを聞きたいです。

4

3 に答える 3

5

ng-formディレクティブはまさにそのような状況のために作成されたものであるため、このユースケースではカスタム ディレクティブを記述する必要はないと思います。ディレクティブのドキュメントから:

たとえば、コントロールのサブグループの有効性を判断する必要がある場合などに、フォームをネストすると便利です。

コードを例として取り上げると、次のようになります。

<div class="control-group" ng-class="{ error: myControlGroup1.$invalid }>
  <ng-form name="myControlGroup1">
    <input ng-model="model1">
    <input ng-model="model2">
  </ng-form>
</div>

この手法を使用すると、ng-model で使用される式を繰り返す必要がなくなり、このフラグメントを任意のフォーム内で再利用できます。

于 2013-04-20T07:18:11.047 に答える