我的要求
我有业务需求,因此需要进行手动验证,因为验证规则会更少或更严格,具体取决于您进入特定屏幕的上下文。
此外,可能同时加载同一视图的多个实例(以及同一个控制器)。
当前尝试
考虑这个Plunkr:
它使用以下函数进行验证:
self.SaveAndValidate = function(validationContext){
var validationRules = self.GetValidationContext(validationContext);
self.RemoveAllClassInfo();
angular.forEach(validationRules, function(value){
$('#' + value.Field).addClass('mandatory');
})
}
您会注意到,您可以保存不同的上下文,这会导致不同的字段被指示为必填字段。
问题
您会注意到单击第二个表单的按钮无法按预期工作,因为它们的目标是第一个表单,而不是第二个表单。这是有道理的,因为我使用jQuery使用特定的字段名称来定位输入字段。在这种情况下,它们在同一页面上存在两次,因此第一次出现是针对性的。
答案 0 :(得分:1)
您应该重新考虑添加强制类的方式。 也许创建一个自定义指令,或者只是一个ng-class = {'强制性' :isMandatory(yourId)}其中isMandatory(id)遍历您的列表以确定它是否为必填字段。
否则,最佳做法是查看ng-form并使用ng-invalid ng-touching类。 https://docs.angularjs.org/guide/forms
最后,请不要在angularJS控制器中使用JQuery。