在使用混合表达式时,用angular和ng-class分别使用class

Using class with angular vs ng-class while using a mixed expression

本文关键字:ng-class class 混合 表达式 angular      更新时间:2023-09-26

我有一个div,我想用AngularJS给一个动态类。

div在一个ng-repeat语句中,其中lang。前缀在前面,然后是sv

使用下面的代码可以工作,并将类设置为i-flag-en而不是i-flag-sv,但这是正确的吗?

<div class="float-left flag i-flag-{{lang.prefix}}"></div>

我知道存在一个ng-class指令,可以用来在AngularJS中动态设置元素的类。

我想我在一本书的某个地方读到,正常的类指令不应该被用来用AngularJS动态地设置类属性,因为Angular操纵dom的方式。

但是,下面的代码不起作用:

<div class="float-left flag" ng-class="i-flag-{{lang.prefix}}"></div>

,我宁愿用这种方式设置类,而不是创建另一个作用域变量。

使用class属性与AngularJS动态设置类是不好的做法吗?即使是不好的做法,它是否一直有效?

你提到的书可能已经谈到了使用ng-class{{}}类插值的问题,其中插值中的更新删除了ng-class类,这个问题已经解决了,参考。因此,在类属性中使用插值是完全可以的,并且不会破坏良好的实践,因为两者都有自己的怪癖。

你对ng-class的使用是不正确的,你必须将字面字符串值与你的范围字符串变量连接起来:

<div class="float-left flag" ng-class="'i-flag-' + lang.prefix"></div>

,但我认为最好使用你的第一个例子:

<div class="float-left flag i-flag-{{lang.prefix}}"></div>