ng-class中的angularjsexpression式语法是什么

AngularJS Noob手册有一些代码将类操作简化为一个简单的expression式和绑定:

<a ng-click="flags.open=!flags.open">...<div ng-class="{active:flags.open}"> 

但是,ng-class中的expression式语法是什么? 我知道一个竖线(|)会通过一个filter,并且一个filter可以在冒号后传递参数,但是上面的代码正在做一些不同的事情。 如果右侧的范围variables的值为true,那么左侧的expression式将被包含,否则将被删除。

这是特定于ng-class指令吗? http://docs.angularjs.org有一些文档解释了这个吗?

这在ngClass文档中被简要地提到了(在我看来)。 如果将对象传递给ngClass ,那么如果该键的值为 true,则将该对象的每个作为类应用于该元素。 例如:

 $scope.first = true $scope.second = false $scope.third = true 

 <div ng-class="{a: first, b: second, c: third}"></div> 

会导致

 <div class="ac"></div> 

你可能也看到过这样的东西:

 <div ng-class="{true: 'complete'}[item.Id != 0]"></div> 

非常rad语法。

编辑:这里发生了什么,是“ completeclass被添加到元素, if(item.Id != 0) 。 或者,我们可以这样写: <div ng-class="{false: 'cookieless'}[monsterEatsCookies('Elmo')]由MonsterEatsCookies函数决定,Elmo不吃cookies,因为这个函数返回false元素获得一个称为无cookieless的类。

一个简单的例子: <div ng-class="{false: 'DoubleNegative'}[1 == 0] 1 !== 0这是” false “ – 将” DoubleNegative “类添加到元素中。

 <div ng-class="{ true: 'complete' } [item.Id != 0]"></div> 

`

  | | | | | | | | | |result| |className | | | | | | | | | | function | | | condition | 

附录

此外,我只是意识到,你可以使用各种不同的键来映射到你的条件。 例如:

ng-class="{ true: 'highlight', undefined: 'mute' }[ item.hasValue ]"

如果item没有“ hasValue ”属性,将应用mute类。 此外,您可以为任何给定的types或值应用一个类:

{'Jonathan Chapman': 'embolden', '[object Object]': 'hide'}[ item.toString() ]

在下面的集合中,这将隐藏一个人的名字,同时隐藏对象的项目:

 [ 'Jonathan Chapman', { aka: 'Johnny Applyseed' }, 'Brad Pitt', { details: 'Fights Zombies' } ] 

有了这个,你可以观察任何$ scope属性中的特定值。 我想这有时候会非常方便。

干杯

 ng-click="flags.open=!flags.open" 

flags.open的值切换为true或false。

 ng-class="{active:flags.open}" 

根据flags.open的值决定active类是否存在。
请看小提琴演示上面的例子。

以下是如何使用filter传递expression式的方法:

  <div ng-class="{ 'customer-page': ('customer' | isRoute), 'orders-page': ('orders' | isRoute) }">....</div> 

如下面的例子:

 div(ng-class=" condition ? ['class_one', 'class_two'] : ['class_three', 'class_four']")