Заполнить значение атрибута id из контроллера в шаблоне angularJs
Я пишу directive
с angularJs
с простым ниже html template
и contorller as c
шаблон:
<p>Input id : {{c.inputId()}}</p> <!--this is for test,correct value is shown-->
<input id="{{c.inputId()}}" type="text" />
но проблема в том, что даже <p>
тег для теста показывает правильное значение, input id
не получает значение.
Я пробовал это id="c.inputId()"
, id='c.inputId()'
, id="{{c.inputId()}}"
, id='{{c.inputId()}}'
, но ни один из них не работает.
Любые идеи, что не так с моим кодом и как я могу решить это???
РЕДАКТИРОВАТЬ 1
Я думаю, что лучше объяснить это documnet.getElementbyId
возвращает ноль.. возможно, это была моя ошибка, что я не упомянул это, чтобы сделать вопрос простым, и я не осознавал, что documnet.getElementbyId
возвращает ноль.
2 ответа
Вы должны использовать ng-attr
использовать интерполяцию в атрибутах, так что в вашем случае ng-attr-id="{{c.inputId()}}"
На @Martijn ответ, на самом деле это будет работать с id
и нет необходимости использовать ng-attr-id
:)
проблема заключается в чтении идентификатора, когда угловое связывание еще не завершено, поэтому document.getElementbyId('#someId')
возвращает ноль.
Я решил это с помощью $timeout
в link
функция моего directive
благодаря этому посту.. Я не уверен, что это лучшее решение, а также я не доволен своим решением.