2015-05-29 25 views
6

我需要使用納克級增加兩個班,一個班,我通過一個函數獲取另一個我需要一個表達式來獲得 - 下面是代碼,我使用的,但得到一些語法錯誤 -NG-類功能和表達

<div class="field-icon" ng-class="getFieldClass(entry.entry_type_id) , 'used': entry_map[entry.guid] > 0" ></div> 

如果可以一起使用函數和表達式,那麼正確的語法是什麼?

+1

你需要用它在大括號納克級=「{getFieldClass(entry.entry_type_id), '拿來主義':的entry_map [條目。 guid]> 0}「 – tpie

+0

@ tpie,我非常懷疑它會起作用。這不是一個有效的JS對象定義 –

+0

getFieldClass的返回值是什麼? –

回答

3

你有錯ng-class語法,應該是JSON格式一樣ng-class="{'used': expression2 }",表達將在該類的基礎上返回Boolean將被添加或從類attribute值刪除。

當你的getFieldClass方法返回的類名,那麼你可以在getFieldClass方法改變你的兩個類邏輯

標記

<div class="field-icon" 
ng-class="getFieldClass(entry)" ></div> 

代碼

$scope.getFieldClass = function(entry){ 
    //use entry.entry_type_id here to decide class which is first 
    //'text-box-icon' class has been selected on some condition based on entry.entry_type_id 
    return {"text-box-icon": true, 'used': $scope.entry_map[entry.guid] > 0}; 
} 
+0

正在恢復已經基於entry_type_id –

+0

一些類@VivekPanday看看更新的解決方案 –

-1

你應該能夠做到這樣的事情:

<div class="field-icon" ng-class="getClasses(entry)"></div> 

您的方法是這樣的:

$scope.getClasses = function(entry) { 
    var classes = {}; 
    if (entry_map[entry.guid] > 0) 
     classes['used'] = true; 

    if (various-logic) 
    classes['custom-class-one'] = true; 
    else if (various-logic) 
    classes['custom-class-two'] = true; 
    //etc 

    return classes; 
} 
3

你可以寫在陣列中的兩個功能和表達。

例子:

<div class="field-icon" ng-class="[getFieldClass(entry.entry_type_id), {'used':entry_map[entry.guid] > 0}]"></div> 

活生生的例子在這裏:https://plnkr.co/edit/OWfkAwJiombrehiS7p9o?p=preview

+1

我不認爲你的語法是正確的,需要包裝的JSON的表達,然後擺陣。如:[getFieldClass(entry.entry_type_id),{'used':entry_map [entry.guid]> 0}]' – Dong

+0

是的。我錯過了。感謝您指出。我還更新了現場示例 – rajagopalx