使用带有angular vs ng-class的类,同时使用混合表达式

时间:2014-08-01 22:04:37

标签: javascript css angularjs

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

div正在使用ng-repeat语句,其中lang.prefix首先是en,然后是sv

使用以下代码并将类设置为i-flag-en而不是i-flag-sv,但它是否正确?

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

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

我想我在一本书的某处读过,因为Angular操纵dom的方式,普通的类指令不应该用AngularJS动态设置类属性。

但是,以下代码不起作用:

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

我宁愿以这种方式设置类,而不是创建另一个范围变量。

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

1 个答案:

答案 0 :(得分:24)

您提到的这本书可能已经谈到了使用ng-class和类{{}}插值的问题,其中插值中的更新删除了ng-class类,此问题已经解决,reference。因此,在类属性中使用插值是完全正确的,并且不会破坏良好的实践,因为它们都有自己的怪癖。

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

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

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

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