ОБНОВЛЕНИЕ 1: вопрос будет усилен на основе отзывов от комментариев.
ОБНОВЛЕНИЕ 2: Был достигнут определенный прогресс. Требуется additinoal h $ compile (el [0]) (scope); p для прохождения. Пожалуйста, прочтите ниже.
ОБНОВЛЕНИЕ 3: Исправление ошибок в предоставленном примере кода, вызывающем дублирование в строках таблицы при компиляции используемого элемента getRequiredFieldInfo()
.
При загрузке страницы список имен полей извлекается из базы данных, которая указывает, какие поля являются check-if-required, используя ajax-вызов required
. Этот вызов должен быть успешно завершен перед выполнением соответствующего углового кода в соответствии с директивой для управления атрибутом. Эта директива должна пересекать все поля div и отмечать их как набор полей на основе списка, который извлекается из базы данных.<input name="firstName" type="text" foo ng-required="isFieldRequired('firstName')" />
isFieldRequired()
Я провел некоторое исследование и нашел этот пост, который, как представляется, ближе всего к моим требованиям:
https://stackoverflow.com/a/28207652/4180447
и, наконец, нашел здесь рабочую версию jsfiddle (обновлено):
http://jsfiddle.net/tarekahf/d50tr99u/
Я могу использовать следующий простой подход:
required
Функция проверяет, найдено ли имя прошедшего поля в списке, оно вернет true.input.ng-invalid, li.ng-invalid { background:#F84072; border: 2px red solid; }
Проблема с этим подходом заключается в том, что я должен добавить эту функцию в каждое поле, которое может быть <ul class = "nav nav-pills" > <li ng-class = "{'ng-invalid': mainForm.homeForm. $ && недействительным mainPromiseResolved} " класс = "активный" > <a data-toggle = "pill" HREF = "#home"> <% = homeTabName%> </a> </ литий> <литий нг класса = " { 'нг-инвалида':. mainForm.clientForm $ недействителен && mainPromiseResolved}» > <a data-toggle = "pill" HREF = "#menu1"> <% = clientTabName%> </a> </ li> <литий нг -класс = "{ 'нг-инвалида':. mainForm.appraiserForm $ недействителен && mainPromiseResolved}" > <a data-toggle = "pill" HREF = "#menu2"> <% = appraiserTabName%> </a> </ литий> <литий нг-класс = "{ 'нг-инвалида':. mainForm.propertyForm $ недействителен && mainPromiseResolved}" > <a data-toggle = "pill" HREF = "#menu3"> <% = propertyTabName%> < / а> </ li> <литий нг-класс = "{ 'нг-инвалида':. mainForm.serviceForm $ недействителен && mainPromiseResolved}" > <a data-toggle = "pill" HREF = "#menu4"> <% = servicesTabName%> </a> </ li> <li ng-class = "{'ng-invalid': mainForm.constructionSt возраст. $ недействителен && mainPromiseResolved} " > <a data-toggle = "pill" HREF = "#menu5"> <% = constructionStageTabName%> </a> </ li> <литий нг-класс = " { 'ng- недействителен ":. mainForm.costForm $ недействителен && mainPromiseResolved}» > <a data-toggle = "pill" HREF = "#menu6"> <% = costTabName%> </a> </ li> <литий нг-класс = "{ 'нг-инвалида':. mainForm.certificationForm $ недействителен && mainPromiseResolved}" нг-нажмите = "redrawCanvas ()" > <a data-toggle = "pill" HREF = "#menu7"> <% = certificationTabName%> </a> </ li> <литий нг-класс = "{ 'нг-инвалида':. mainForm.photosForm $ недействителен && mainPromiseResolved}" > <a data-toggle = "pill" HREF = "#menu8"> < % = photoTabName%> </a> </ li> <li ng-class = "{'ng-invalid': mainForm.mapForm. $ invalid && mainPromiseResolved}" > <a data-toggle = "pill" href = " # menu9 " > <% = locationTabName%> </a> </ li> </ ul> .