前面有个笨重的问题,让我们把这件事分解一下。我试图实现类似于本机<label> for <input>的类似行为。我不能嵌套它们,所以我使用这样的样式:
<input type="checkbox" id="test" />
Some other content...
<label for="test">Lorem ipsum</label>在我的例子中,<label>是一个自定义指令,而<input>是一个任意部分。看起来可能是这样的:
<p id="test">Some element...</p>
Some other content...
<custom-directive for="test">My directive</custom-directive>遗憾的是,我的id并不是真正的静态的。这是一种表达。看起来可能是这样的:
<p id="test-{{ foo }}">Some element...</p>
Some other content...
<custom-directive for="test-{{ foo }}">My directive</custom-directive>现在我的问题是:在<custom-directive>内部,我希望在for属性中配置元素。让我们假设foo的值"bar"设置在$rootScope内部的<custom-directive> I get foo-bar中。然而,无论我在哪里尝试它(在compile,link,controller,有或没有priority,等等)特定元素(此处为<p>)当时仍然具有test-{{ foo }},因此我在getElementById中获得了null。
如果元素具有包含表达式的id ,那么如何在diretive之外获取元素?
下面是一个例子:http://jsfiddle.net/cd6uooze/
(注意:在我的实际应用程序中,这个问题略有不同。我实际上可以从一个指令中getElementById正确的元素,即使id包含一个表达式。但是,只有在特定的模板在$templateCache中才能起作用。我不能在JSFiddle中详细说明这一点,但是JSFiddle中的例子非常相似。)
发布于 2015-01-16 12:59:12
您需要在getElementById中编写$timeout代码
检查这个更新的小提琴。
https://stackoverflow.com/questions/27984403
复制相似问题