2016-06-09 68 views
1

我有一个角度引导标签集。Angular JS:将类绑定到两个不同的表达式?

备注:这是一个ui-bootstrap指令。所以ng-class不起作用。

为了能够有条件地更改类,我发现这里的SO:

<tab heading="My Tab" class="{{classifyForm.$dirty ? 'tab-dirty':''}}"> 

伟大的作品,当表单classifyForm脏了,它增加了类tab-dirty否则删除它。

除了现在我需要做的事情与另一个条件和另一个另外到我有什么。

什么是两个表达式的组合方式,所以我得到本质:

if form is dirty,tab-dirty(我现在)if foobar then tab-foobar

所以,如果形式是肮脏和foobar的是真实的,结果选项卡应该有tab-dirtytab-foobar类,如果只有一个是真的,那么只有这一个类。

+0

我会在控制器中创建一个方法来生成类字符串,也许带有参数:) –

+0

这是一个很好的方法。可能没有其他办法。 – Steve

回答

1

这是很烦人,你不能在此使用纳克级,但你可以做以下

<tab heading="My Tab" class="{{ (classifyForm.$dirty ? 'tab-dirty ':'') + (classifyForm.foobar ? 'tab-foobar ':'')}}"> 
+0

我不确定如何构建这样的东西。谢谢。 – Steve

+0

它的工作原理。我在我的应用程序中使用了同样的东西。 –

+0

我不得不进行编辑以确保添加的类都在它们之间有空间。否则,在上述情况下,你会得到'class =“tab-dirtyfoobar”' – Steve

1

更新ng-class将不会在像OP提到的角度UI tab指令上工作。以下是其中一个已记录错误的链接:https://github.com/angular-ui/bootstrap/issues/1741

他们不提供任何良好的解决方案来解决它。所以我看到的唯一方法是在控制器中创建一个函数来处理应用类的逻辑。

对于所有其他情况(如果可能),你应该使用ng-class

<tab heading="My Tab" ng-class="{ 'tab-dirty': classifyForm.$dirty, 'your-other-class': someOtherProperty }"> 
+0

我不能使用ng-class,这是一个ui-bootstrap指令。如果我可以使用ng-class,那就像你建议的那样简单。 – Steve

+0

你可以为它做一个笨蛋吗?这很奇怪为什么'ng-class'不起作用。 – DerekMT12

+0

“Tab”是一个指令,指令实际上写出了自己的引导html代码并将其内容变换。不管谁创建它,都不允许添加ng类。这是指令的旧版本,0.13.1。也许现在的一个更聪明,但这个项目陷入了旧的一个。 – Steve