有什么方法可以使ng-class
这样的东西成为条件表达式吗?
例如,我尝试了以下内容:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
这段代码的问题是,无论obj.value1
是什么,类测试总是应用于元素。这样做:
<span ng-class="{test: obj.value2}">test</span>
只要obj.value2
不等于真实值,则不应用中的类。现在我可以通过以下操作来解决第一个示例中的问题:
<span ng-class="{test: checkValue1()}">test</span>
其中CheckValue1
函数如下所示:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
我只是想知道这是否是ng-class
的工作方式。我也在构建一个自定义指令,我想在那里做类似的事情。然而,我找不到观看一个表情的方法(而且也许那是不可能的和它这样工作的原因)。
这里有一个plnkr来说明我的意思。
你的第一次尝试几乎是正确的,它应该可以工作没有引用。
{test: obj.value1 == 'someothervalue'}
这是一个PLNKR。
ngClass指令将适用于任何计算truthy或falsey的表达式,有点类似于Javascript表达式,但有一些区别,您可以在这里阅读。如果您的条件太复杂,那么您可以使用返回truthy或falsey的函数,就像您在第三次尝试中所做的那样。
只是为了补充:您还可以使用逻辑运算符来形成逻辑表达式,如
ng-class="{'test': obj.value1 == 'someothervalue' || obj.value2 == 'somethingelse'}"