Можно ли проверить текстовое поле, содержащее имя, как objectVO.fieldname с помощью AngularJS

#javascript #angularjs

#javascript #angularjs

Вопрос:

Есть ли какой-либо способ проверить textfield имя, содержащее objectVO . fieldName имя, с помощью AngularJS?

 <form name="form" ng-submit="submitForm($event)" novalidate() >
    <input type="text" name="OBJECTVO.FIELDNAME" ng-model="fieldName" required />
    <span class="error" ng-show="form.OBJECTVO.FIELDNAME.$invalid" >
</form>
 

Я использую Value Object шаблон, и AngularJS понимает только простое символьное имя поля полей ввода.

Как мне отобразить ошибку в ng-show?

ng-show=»форма.OBJECTVO.FIELDNAME.$invalid» недопустимый оператор. Каков правильный способ?

Я много исследовал, но не нашел никакого полезного контента. Пожалуйста, помогите!

Комментарии:

1. Документы Angular: docs.angularjs.org/api/ng/input/input[text]

2. Взгляните на эту демонстрацию: plnkr.co/edit/81jgWv?p=preview

3. Поле ввода содержит objectVO.fieldname . Как мне отобразить ошибки в ng-show?

Ответ №1:

Для доступа к свойствам объекта необходимо использовать нотацию «array»:

 ng-show="form['OBJECT.FIELDNAME'].$invalid"
 

Смотрите также эту короткую демонстрацию.



В JavaScript это obj.someProp сокращение для (и эквивалентно) obj['someProp'] .
Это обычно полезно для доступа к свойству объекта, когда мы не знаем имя во время «компиляции», но мы знаем его во время «выполнения» (т. Е. Мы знаем, что будет переменная, содержащая имя свойствамы хотим получить доступ):

 function accessSomeProperty(object, propertyName) {
    return object[propertyName];
}
 

Например.

 propName = 'test';
accessSomeProperty(obj, propName);   // returns: obj[propName]
                                     //      === obj['test']
                                     //      === obj.test
                                     // with the benefit that 'test'
                                     // was specified dynamically