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语法。
编辑:这里发生了什么,是“ complete
” class
被添加到元素, 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']")