未评估角度插值表达式

时间:2014-03-12 00:46:17

标签: angularjs angularjs-directive

我遇到了角度插值问题。

我有一个如下所示的指令模板:

<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上找不到任何东西。

2 个答案:

答案 0 :(得分:1)

所以答案是属性不会在该级别上进行插值。或者更具体地说,在编译HTML时,角度处理DomElements。具有以{{开头的属性的Dom元素不是有效属性,这就是$compile不知道它的原因。但是,现在确实关于属性值或Dom元素内容中的此类表达式。

答案 1 :(得分:0)

请记住,如果为应用程序编写,则angular(他们会说)是什么html。数据绑定语法被评估为html。话说:

x="{{attrs.autofocus | toAutofocusText}}" 

是不同的,因为现在你正在讨论属性的属性被评估而不是html元素中的一些未知字符。

我建议的另一件事是你要研究使用ng-class来操作类的东西:

http://docs.angularjs.org/api/ng/directive/ngClass