防止在ng-invalid上提交rails表单

时间:2013-01-10 08:45:59

标签: ruby-on-rails forms coffeescript angularjs haml

我有一个通过rails helpers生成的表单,上面有一些AngularJS。

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

等等。 在这种形式中,我有各种角度指令和控制器相互嵌套。其中一个指令是监听字段并比较其值以进行一些自定义角度验证,如下所示:

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

这会在表单和相关字段上正确设置ng-invalid / ng-valid,但表单提交仍然可以没有问题。

虽然我理解阻止此行为的“正确”方法是引入一个ngSubmit,它进行验证,然后联系到一个Angular Service,它序列化为JSON并发布到相关端点,这将需要重写一个真正淫秽的代码。

因此我的问题是:

如何在不这样做的情况下阻止表单提交?

谢谢!

1 个答案:

答案 0 :(得分: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之后