我在一本书中看到了以下ng-class =“expression”的例子。 http://plnkr.co/edit/fJGT5L9HZXvgAiAyXwlW?p=preview
ng-class="{error:isError,warning:isWarning}"
我得到了控制器逻辑,但我怀疑是在这里发生的插值。
以下情况意味着什么(评估值是多少)和为什么?
答案 0 :(得分:2)
你可以注意到ng-class只是哈希,其中键是类和值的名称 - 条件(如果为true,则类将被添加到class
属性)
因此,ng-class
只使用角度表达式并检查它返回的数据(字符串,数组或散列映射),然后它应用某个解析器来获取最终的类数组以将其放入class
。其中之一如上所述。
Angular就像Javascript使用eval机制来执行代码(表达式)一样,但与JS Angular不同,使用名为$eval([expression], [locals])
的安全eval(Docs)
我强烈建议您阅读有关Angular表达式的article以了解它的工作原理。
答案 1 :(得分:2)
来自ngClass参数docs:
参数评估的结果可以是字符串 表示空格分隔的类名,数组或类的映射 名称为布尔值。在地图的情况下,的名称 值为truthy的属性将作为css类添加到 元件。
因此,在您的情况下,评估后的参数结果是一个产生:
的地图ng-class="{error:true,warning:true}"
=> class="error warning"
ng-class="{error:true,warning:false}"
=> class="error"
ng-class="{error:false,warning:true}"
=> class="warning"
ng-class="{error:false,warning:false}"
=> no class attribute
答案 2 :(得分:1)
Angular会将以下类属性添加(或附加到现有类attr):