我有一个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>