有条件地应用评估的表达式类名?

时间:2015-04-21 18:11:52

标签: angularjs

我最初有这个,很简单:ng-class="response.name" (其中response.name是一个评估表达式。)

但现在我尝试这样做:ng-class="{response.name: true, tooltip: someExpression}"(因此response.name始终存在但tooltip依赖于上下文。)

你知道,我不能将response.name作为对象的关键......我知道这一点。它只是将字符串response.name视为字符串,并且没有评估。但我需要有条件地应用tooltip类。我不知道如何结合这些需求!

我首先尝试使用多个ng-class属性,但它忽略了除第一个之外的所有属性。

4 个答案:

答案 0 :(得分:1)

你可以这样做

<div ng-class="{tooltip: someExpression}" class="{{response.name}}"></div>

请确保在所有支持的浏览器中对其进行测试,因为这样的动态设置属性会导致某些浏览器出现问题

答案 1 :(得分:1)

FWIW:从Angular 1.4开始,您可以混合使用表达式:

ng-class="[response.name, {tooltip: someExpression}]"

答案 2 :(得分:1)

ng-class允许你这样做:

<div ng-class="[response.name, {tooltip: someExpression}"></div>

答案 3 :(得分:0)

我个人用这种可怕的方式解决了这个问题:

{ {{ response.name }}: true, 'tooltip-container': {{ !!response.tooltip }} }

内插到计算表达式中的计算表达式。丑陋。绝对有利于Rob的方式。