2017-07-04 42 views
-2

我在樣式表中定義的幾個樣式類爲如下所示:變遷類組合

.left-align{ 
    /* some styles here */ 
} 
.right-align{ 
    /* some styles here */ 
} 
.validate-error{ 
    /* some styles here */ 
} 

基於在類數據的類型我需要對齊內容向左或向右,並且我想調用一種方法來驗證控件中的數據,如果驗證失敗,還需要將validate-error類追加到ng-class。我通過不同的,所以線程與其他文章和題目爲多個條件ng-class但沒有發現我的情況下工作時,我曾嘗試以下基礎上,引用QA網站消失了:

ng-class="{!vm.validate()?'validate-error': vm.isNumericField?'right-align':'left-align'}" 

但這不會將內容向右對齊,即使validate()返回false,即使isNumericField也是如此。

總之,我需要添加left-alignright-align依賴於isNumericField財產,也validate-error如果validate()返回false。

"isNumericField?{'left-align':'right-align'} + 'validate-error':validate()" 

請人讓我知道,如果有任何的方式來實現這一目標:

+0

不能使用,如果簡單的循環獲取屬性類並更改它?例如:if($ scope.isNumericField) $ scope.class =「left-align」; else $ scope.class =「right-align」; –

+0

@HemaNandagopal:好,現在我可以切換兩個類,但是如果'validate()'方法返回false,我需要找到添加第二個類的方法。因此,我期望'ng-class =「right-align validate-error」' –

+0

在這種情況下,您可以將兩個類組合在一起:$ scope.class =「right-align validate-error」; –

回答

1

可以指定類名的「映射」到布爾值:

ng-class="{'validate-error': !vm.validate(), 'right-align': vm.isNumericField, 'left-align': !vm.isNumericField}"