我的要求

我有一些业务需求,因此有必要进行手动验证,因为验证规则会变得更严格或更严格,具体取决于您要进入特定屏幕的上下文。

同样,可能同时加载同一视图的多个实例(因此,同一控制器)。

当前尝试

考虑以下Plunkr

它使用以下功能进行验证:

self.SaveAndValidate = function(validationContext){
  var validationRules = self.GetValidationContext(validationContext);

  self.RemoveAllClassInfo();

  angular.forEach(validationRules, function(value){
    $('#' + value.Field).addClass('mandatory');
  })
}


如您所见,您可以为不同的上下文进行保存,这将导致将不同的字段指示为必填字段。

问题

如您所见,单击第二个表单的按钮无法正常工作,因为它们的目标是第一个表单,而不是第二个。这很有意义,因为我正在使用jQuery使用特定字段名称来定位输入字段。在这种情况下,它们在同一页面上存在两次,因此首次出现是有针对性的。


如何更改此设置,以便每个验证都针对正确的表单?
有没有一种方法可以使用Angular而不是jQuery?

最佳答案

您应该重新考虑添加强制类的方式。
也许创建一个自定义指令,或者简单地创建一个ng-class = {'mandatory':isMandatory(yourId)},其中isMandatory(id)遍历您的列表以决定它是否为必填字段。

否则,最佳实践将是查看ng-form并使用ng-invalid ng-touched类。
https://docs.angularjs.org/guide/forms

最后,请不要在您的angularJS控制器中使用JQuery。

09-05 10:50
查看更多