Заполнить значение атрибута 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
благодаря этому посту.. Я не уверен, что это лучшее решение, а также я не доволен своим решением.

Другие вопросы по тегам