0

Railsヘルパーを介して生成されたフォームがあり、AngularJSがいくつか含まれています。

 = form_for some_models do |f|
      %fieldset.form-horizontal
          %div.some-class
     #And so on and so forth
      =f.submit

等々。このフォーム内には、さまざまな角度ディレクティブとコントローラーが相互にネストしています。ディレクティブの1つは、フィールドをリッスンし、その値を比較して、次のようなカスタム角度検証を実行することです。

    ctrl.$setValidity("decisionRuleCodeActivated", scope.valid).

これにより、フォームと関連フィールドにng-invalid / ng-validが正しく設定されますが、フォームの送信は問題なく実行できます。

この動作をブロックする「正しい」方法は、検証を行うngSubmitを導入してから、JSONにシリアル化して関連するエンドポイントに投稿するAngularサービスにアクセスすることですが、これには本当にわいせつな書き直しが必要になります。コードの量。

したがって、私の質問:

フォームが送信されないようにするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

0

私の解決策:

  if scope.valid is true
    angular.element("form.ng-valid").find("input:submit").click(->
      true
    )
  else
    angular.element("form.ng-invalid.ng-dirty").find("input:submit").click(->
      false
    )

ディレクティブの$setValidityの直後にある、ウォッチによってトリガーされるメソッドの上記のコード

于 2013-01-10T10:33:36.873 に答える