我正在学习AngularJS,我看到标签" li"与ngClass指令相关联,该指令具有" {marked:nav.estoy(' /')}"值。 我的问题是为什么括号内的值的格式为x:y。我就是" nav.estoy(' /')在控制器方法中定义但不明白为什么这种方法的反应是":"
<body ng-app="app">
<nav ng-controller="navCtrl as nav">
<ul>
<li ng-class="{marcado: nav.estoy('/')}">
<a href="#/">Datos personales</a>
</li>
</ul>
</nav>
...
答案 0 :(得分:3)
ng-class可以将对象作为参数:angularjs doc
对象的键是要应用的类名,对象的值是将评估truthy或falsey的表达式。在这种情况下,如果marcado
返回true,则表示将应用类nav.estoy('/')
,但如果值评估为真(非零,非零),则可以轻松地使用几个键来应用几个类。空)。
答案 1 :(得分:2)
在x:y格式中,x是类名,y是表达式。我相信他们使用这种名称值对技术,因此可以使用逗号轻松设置多个类。表达式必须返回一个布尔值。
<li ng-class="{marcado: nav.estoy('/'), 'another-class': expression}">
<a href="#/">Datos personales</a>
</li>
答案 2 :(得分:1)
在您的示例中,如果nav.estoy('/)
返回真值,则“marcado”类将添加到class
属性中。
来自文档:
如果表达式求值为一个对象,则对于具有truthy值的对象的每个键值对,相应的键将用作类名。