2017-07-14 73 views
1

这里是实现ngClass指令:我是否使用多个表达式来添加多个类?

data-ng-class="{ 'tooltip_show' : showTooltip , 'tooltip__' + brand.settings.name }" 

的我想要的一个例子,但它不工作!有人可以帮忙吗?

+1

为什么有一个NG-类 'tooltip_show' 内的两个值? – Vivz

+0

我需要一个依赖于showTooltip的类,而另一个依赖于此变量brand.settings.name。我能以另一种方式做到这一点吗? – madyar13

+0

正如@harriyot所述。这应该足够了{'tooltip_show':showTooltip,'tooltip__'+ brand.settings.name:tooltipText} – Vivz

回答

2

使用数组形式ng-class

<div ng-class="[showTooltip ? 'tooltip_show' : '', 
       'tooltip__' + brand.settings.name]"> 
<div> 

或计算类的JavaScript:

<div ng-class="computeClass(tooltip_show, brand.setting.name)"> 
</div> 
$scope.computeClass(show, name) { 
    var obj = {}; 
    obj.showTooltip = show; 
    obj['tooltip_'+name] = true; 
    return obj; 
}; 

后一种方法更容易调试和复杂的计算更好。

参见,

+0

是的,这是我认为你可以做的@стасПилипко,很好的答案georgeawg:+1: –

+0

谢谢!有用! – madyar13

0

看起来您没有为第二项设置值。你的意思是这样

{ 'tooltip_show' : showTooltip , 'tooltip__' + brand.settings.name : tooltipText } 

{ 'tooltip_show' : showTooltip , 'tooltip__' : brand.settings.name } 

+0

'tooltip__'+ brand.settings.name - 当我只写这部分时,我收到类似这样的类=“tooltip__class”。 brand.settings.name - 它是可变的,取决于页面。 – madyar13

0

http://jsbin.com/genaqapefe/edit?html,js,output

data-ng-class="{ 'tooltip_show': showToolTip, {{ 'tooltip_' + brand.settings.name }}: true }" 

这是在这个仓为我工作。如果没有大括号,我无法评估它,但不知道这是否是最佳做法。

+0

@стасПилипко还是你想让它始终显示?您可以使用一个类,如:'class =“{{'tooltip_'+ brand.settings.name}}”data-ng-class =“{'tooltip_show':showToolTip}”' – kauffee000

+0

请参阅[AngularJS开发人员指南 - 为什么混合插值和表达式是不好的做法](https://docs.angularjs.org/guide/interpolation#embedding-interpolation-markup-inside-expressions) – georgeawg

+0

你不应该在'class'属性的值中使用插值,当在同一个元素上使用'ngClass'指令时。请参阅[AngularJS ng-class指令参考 - 已知问题](https://docs.angularjs.org/api/ng/directive/ngClass#known-issues)。 – georgeawg