0

Stackoverflow コミュニティの助けを借りて、AngularJS のオンザフライ検証のデフォルトを検証 onblur および送信時に変更することができました: Trigger validation of all fields in Angular Form submit

これは検証部分では正常に機能しますが、コントローラーでモデルを使用しようとすると、モデルが設定されないという問題があるようです。

この plunk には、user.mail の値を記録しようとする例があります: http://plnkr.co/edit/TOb2RRh6b5FenphLtSYS?p=preview

私ができることは、ディレクティブでこれです:

 scope.authenticate.userName = elm.val();

それに関する問題は、要素のモデル名をハードコーディングすることを意味するため、そのディレクティブをその要素に対してのみ使用可能にすることです

モデルの値を別の方法で設定したり、モデル名をディレクティブに取得してその変数を作成したりすることは可能ですか?

4

1 に答える 1

0

あなたが見ている問題はngModel、保持する値が何であるかを決して伝えていないためです ( NgModelController docsを見てください)。

あなたが見たいのは$setViewValue方法です。

ここであなたのプランクをフォークし、ユーザーをダンプするだけの div を追加したので、何が起こっているかがわかります。

コントローラーに加えた唯一の変更は、doValidation関数内にありました。

function dovalidation() {
  var email = elm.val();
  if (EMAIL_REGX.test(email)) {
    ctrl.$setViewValue(email);  // set the model to the right value
    ctrl.$setValidity('emails', true);
  } else {
    ctrl.$setViewValue(null);   // invalid, so set the model to null
    ctrl.$setValidity('emails', false);
  }
}
于 2013-06-10T14:38:28.000 に答える