Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получение доступа к тегу по свойству data-ng-model (https://javascript.ru/forum/events/71743-poluchenie-dostupa-k-tegu-po-svojjstvu-data-ng-model.html)

giovanni 09.12.2017 18:26

Получение доступа к тегу по свойству data-ng-model
 
Добрый день!

Прошу не ругать сильно, если вопрос примитивный. в JS разбираюсь пока очень слабо.
Пользовался поиском, но нужного мне решения не нашел.

Пишу небольшой макрос на VBA. В макросе в нескольких местах запускаю код JS, для заполнения полей формы.
Сейчас есть такой код:
Код:

oie.document.parentWindow.execScript "angular.element(document.getElementsByTagName('input')[52]).scope().someText = '12345';"
oie.document.parentWindow.execScript "angular.element(document.getElementsByTagName('input')[52]).scope().$apply();"

С помощью него заполняется поле формы текстом "12345". Однако, в данном коде тег input, необходимый для заполнения, приходится получать при помощи номера тега [52]. В то же время, свойство data-ng-model нужного тега известно.

Подскажите, пожалуйста, зная название свойства data-ng-model тега input, можно ли получить к нему прямой доступ и заполнить это поле?

Написал такой код:
Код:

oie.document.parentWindow.execScript "angular.element('[ng-model="sometext"]') = '12345';"
oie.document.parentWindow.execScript "angular.element('[ng-model="sometext"]').$apply();"

Но код никак не хочет работать.

Спасибо!

giovanni 10.12.2017 15:37

Если можно, я бы добавил прям в этом посте.

С обращением к полю по свойству data-ng-model, вроде, разрбрался.
Но возникла новая проблема. Если в названии свойства data-ng-model цельное слово, например, sometext, то все работает хорошо:

Код:

oie.document.parentWindow.execScript "angular.element('[data-ng-model=sometext ]').scope().sometext = '12345';"
oie.document.parentWindow.execScript "angular.element('[data-ng-model=sometext ]').scope().$apply();"

Однако, если в названии свойства data-ng-model слово с точкой внутри, например, some.text, то выдается ошибка " Syntax error, unrecognized expression: [data-ng-model=some.text]. К примеру, в таком коде ошибка:

Код:

oie.document.parentWindow.execScript "angular.element('[data-ng-model=some.text ]').scope().some.text = '12345';"
oie.document.parentWindow.execScript "angular.element('[data-ng-model=some.text ]').scope().$apply();"

Насколько мне позволяют понять мои знания, то ошибка возникает из-за точек в названии свойства. Подскажите, пожалуйста, как этого избежать?

рони 10.12.2017 15:40

giovanni,
а так [data-ng-model=\"some.text\"] ?

giovanni 10.12.2017 15:51

Цитата:

Сообщение от рони (Сообщение 472495)
giovanni,
а так [data-ng-model=\"some.text\"] ?

Пробовал так, но в ответ выдается ошибка Syntax error.
Второй день сижу в поисковике, но никакой инфы не могу найти (
В то же время, если в названии цельное слово, то все ок.


Часовой пояс GMT +3, время: 13:31.