html - AngularJS ngClass 条件

有没有办法为 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 指令适用于任何计算真假的表达式,有点类似于 Javascript 表达式,但有一些不同,您可以阅读 here . 如果您的条件过于复杂,那么您可以使用返回真假的函数,就像您在第三次尝试中所做的那样。

只是为了补充:您还可以使用逻辑运算符来形成逻辑表达式,例如

ng-class="{'test': obj.value1 == 'someothervalue' || obj.value2 == 'somethingelse'}"

https://stackoverflow.com/questions/16529825/

相关文章:

html - localStorage、sessionStorage、session 和 cooki

jquery - 在jQuery中获取复选框值

javascript - 我可以让