我遇到了角度插值问题。
我有一个如下所示的指令模板:
<div class="autocomplete {{attrs.class}}" id="{{attrs.id}}">
<input type="text" {{attrs.autofocus | toAutofocusText}} ng-model="searchParam" placeholder="{{attrs.placeholder}}"/>
...
</div>
我遇到的问题是这个表达式没有被评估:
{{attrs.autofocus | toAutofocusText}}
但是,如果我将此更改为以下内容:
x="{{attrs.autofocus | toAutofocusText}}"
它会得到评估。
有人可以解释一下为什么会发生这种情况吗?我猜它是相当基础的东西,但我在Google上找不到任何东西。
答案 0 :(得分:1)
所以答案是属性不会在该级别上进行插值。或者更具体地说,在编译HTML时,角度处理DomElements。具有以{{
开头的属性的Dom元素不是有效属性,这就是$compile
不知道它的原因。但是,现在确实关于属性值或Dom元素内容中的此类表达式。
答案 1 :(得分:0)
请记住,如果为应用程序编写,则angular(他们会说)是什么html。数据绑定语法被评估为html。话说:
x="{{attrs.autofocus | toAutofocusText}}"
是不同的,因为现在你正在讨论属性的属性被评估而不是html元素中的一些未知字符。
我建议的另一件事是你要研究使用ng-class来操作类的东西: