How to get AngularJS element by name?

In my form validation, there is part of the server validation. Therefore, I must return from the list of servers with field names and error strings in each of them. My idea was to write a general knowledge of the code in order to deal with all fields without knowing them in advance by contacting them with their name. this field, for example:

<!-- Email --> <div class="form-group" data-ng-class="{ 'has-error' : step1Form.email.$invalid && (!step1Form.email.$pristine || submitted) }"> <label>Email</label> <input type="email" name="email" class="form-control" data-ng-model="user.email" required data-ng-minlength="5" data-ng-maxlength="60"> <p data-ng-show="step1Form.email.$error.required && (!step1Form.email.$pristine || submitted)" class="help-block">required!</p> <p data-ng-show="step1Form.email.$error.minlength" class="help-block">too short1</p> <p data-ng-show="step1Form.email.$error.maxlength" class="help-block">too long!</p> <p data-ng-show="step1Form.email.$error.email" class="help-block">invalid email!</p> <p data-ng-show="step1Form.email.$error.serverError" class="help-block">{{emailServerError}}</p> </div> 

as you can see, the emailServerError variable is saved for errors that occur when checking the server ... I have many fields in my application and I'm trying to write a common code that will correspond to all fields ...

so this is angular code:

 // function to submit the form after all validation has occurred $scope.submitForm = function() { // check to make sure the form is completely valid if ($scope.step1Form.$valid) { // now we will go to server side validation // AJAX calls....... // lets say we got this back: var problem = { field: 'email', msg: 'this email is already registered'}; // now we need to setValidity for email input. var errorVariableName = $parse(problem.field + 'ServerError'); // Get the name of the error string variable. errorVariableName.assign($scope, problem.msg); // Assigns a value to it console.log($scope.emailServerError); // = 'this email is already registered' // HERE THE PROBLEM: // now i need to do something like that: // $scope.step1Form. + problem.field + .$setValidity('serverError', false); // but i dont know how to this that. // i think that i need to get this element ($scope.step1Form. + problem.field) in some way by name, and then use setValidity on it. but i dont know how.. } }; 

the question is in the comments inside the code ...

+6
source share
1 answer

You can try

 $scope.step1Form 

and then access the correct value using

 $scope.step1Form["nameOfProblemfield"] 
+3
source

All Articles