2

我正在写一个directivewith 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返回null ..也许这是我的错误,我没有提到它是为了使问题简单,我没有意识到documnet.getElementbyId返回null。

4

2 回答 2

1

您应该使用ng-attr在属性中使用插值,所以在您的情况下ng-attr-id="{{c.inputId()}}"

于 2016-03-29T06:42:54.963 回答
0

对于@Martijn 的回答,实际上它可以使用id并且不需要使用ng-attr-id:)

问题是在角度绑定尚未完成时读取 id,因此document.getElementbyId('#someId')返回 null。感谢这篇文章

我已经通过使用功能解决了这个问题。我不确定这是否是最好的解决方案,而且我对我的解决方案也不满意。 $timeoutlinkdirective

于 2016-03-30T07:04:07.133 回答