1

AngularJs のバージョンを 1.3 から 1.4 に更新しました。次のようなエラーが発生します。


構文エラー: [{frmname}}.emailAddress.$error] で始まる式 [{{frmname}}.emailAddress.$error]の列 2 のトークン '{' 無効なキー。

Angular 1.3で完全に機能します

<form name="{{frmname}}">
  <h1>My form name = {{frmname}}</h1>
  <div class="field">
  <label for="emailAddress">Enter your email address:</label>
  <input type="email" name="emailAddress" ng-model="email" required />
    <div ng-messages="{{frmname}}.emailAddress.$error">
      <div ng-message="required">
        You forgot to enter your email address...
      </div>
      <div ng-message="email">
        You did not enter your email address correctly...
      </div>
    </div>
  </div>
  <input type="submit" />
</form>

フィドル

4

2 に答える 2

2

動的変数からフォーム名を設定する必要がある場合はng-form、実際のフォーム内で入力を検証するために使用できます。

基本的なhtml:

<form name="{{formName}}" novalidate>

  <ng-form name="emailError">
    <div ng-messages="emailError.emailAddress.$error" style="color:maroon" role="alert">
      <label for="emailAddress">Enter your email address:</label>
      <input type="email" name="emailAddress" ng-model="email" minlength="5" required />
      <div ng-messages="emailError.emailAddress.$error" style="color:maroon" role="alert">
      <div ng-message="required">You did not enter a field</div>
    </div>
  </ng-form>

  <input type="submit" />

</form>

プランカー: https://plnkr.co/edit/Q0ifmRXKkLfwKGNqv8p4?p=preview

ngForm の公式ドキュメント: https://docs.angularjs.org/api/ng/directive/ngForm

于 2016-05-17T11:32:06.583 に答える
-1

最後に私は解決策を得ました、

ng-messages 属性値を取得する関数を追加します。

<div ng-messages="getMessages('emailAddress')">
  <div ng-message="required">
    You forgot to enter your email address...
  </div>
  <div ng-message="email">
    You did not enter your email address correctly...
  </div>
</div>

コントローラーまたはディレクティブ内で関数を宣言します。

$scope.getMessages = function (el) {
  return $scope.$eval($scope.frmname)[el].$error;
}

フィドル

于 2016-05-17T11:49:24.843 に答える