私はしばらくの間グーグルで行っており、私の特定のケースでは良い答えが見つからないようです。リアルタイム検証を行う方法を見つけましたが、ユーザーが「送信」をクリックした後、カスタム検証と組み合わせる必要があります。私はまだ有効ではないにもかかわらず、ユーザーが依頼をクリックできるようにしたいが、コード内の投稿をキャンセルする。次のコードを取る:AngularJS - フォーム送信時に余分な検証を実行
<form name="cashForm" id="cashForm" novalidate>
<input type="text" id="name" required /> //
<input type="number" placeholder="Tax: " required name="tax" id="tax" />
<input type="number" placeholder="Tip: " required name="tip" id="tip" />
<button ng-click="submission()" ng-disabled="paymentForm.$invalid">Submit</button>
</form>
//inside controller
this.submission = function() {
//check if tip + tax is over 20
//prevent form and show error message if not
//otherwise allow default behavior
}
だから私は唯一税/先端が、私はこれをチェックしないと、それは満たしていない場合どのように私は、フォームの送信を防ぐにはどうすればよい10以上である場合、フォームが実際に提出したいです要求事項?また、私はコントローラにこのロジックを入れますか?
ありがとうマシュー。私はそれが良い点に私を得るべきだと思います。最後の質問の1つは、コントローラーがこのロジックを配置する正しい場所ですか?私はあなたがコントローラにあまりにも多くのロジックを置くべきではないと聞いてきましたが、これが理にかなっている唯一の場所であるようです。 –
個人的には、ビューモデル( '$ scope')にどのエラーメッセージがどのように取り込まれるかを条件が直接決定するので、コントローラーには問題ないと思います。コントローラーをできるだけリーンに保つようにしてください。コントローラーでたくさんのスクロールが必要な場合は不快になります。これは多すぎることを意味します。それが制御不能になった場合は、「指示するかどうかをチェックする」ロジックをカスタムディレクティブに抽象化し、独自のカスタムクリック(サブミット)ビヘイビアを作成してボタンのng-clickを置き換えます。 –
その後、_really_を巧妙にしたい場合は、送信を続行できるかどうかを決定する設定を含むconfigオブジェクトを渡して、カスタムディレクティブを再利用可能にしてみてください。次に、それを再利用し、その動作を比較的容易に複製することができます。時間の投資。 –