2015-05-29 27 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