2015-05-29 8 views
6

Ich muss zwei Klassen hinzufügen mit ng-Klasse, eine Klasse, die ich durch eine Funktion bekomme ich brauche, um durch einen Ausdruck zu bekommen - Unten ist Code, den ich benutze, aber einige Syntaxfehler -ng-Klasse mit Funktion und Ausdruck

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

Was wäre korrekte Syntax, wenn es möglich ist, Funktion und Ausdruck zusammen zu verwenden.

+1

Sie müssen es in geschweiften Klammern wickeln ng-class = "{getFieldClass (entry.entry_type_id), 'gebraucht': entry_map [Eintrag. guid]> 0} " – tpie

+0

@ tpie, ich bezweifle sehr, dass es funktionieren wird. Dies ist keine gültige JS-Objektdefinition. –

+0

Was ist der Rückgabewert von 'getFieldClass'? –

Antwort

3

Sie haben falsch ng-class Syntax, es im JSON-Format wie ng-class="{'used': expression2 }" sein sollte, Ausdruck Boolean auf Grundlage dieser Klasse zurückkehren wird aus der Klasse attribute Wert erhalten hinzugefügt oder entfernt.

Als Ihr getFieldClass Methode zurückgibt Klassennamen, dann können Sie Ihr beide Klassenlogik in getFieldClass Methode verschieben

Markup

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

-Code

$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

ist eine Klasse zurück bereits basierend auf entry_type_id –

+0

@VivekPanday werfen Sie einen Blick auf aktualisierte Lösung –

-1

sollten Sie sein kann so etwas machen:

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

wo Ihre Methode wie folgt aussieht:

$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

Sie können die Funktion und Expression in Array schreiben.

Beispiel:

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

Live-Beispiel hier: https://plnkr.co/edit/OWfkAwJiombrehiS7p9o?p=preview

+1

Ich glaube nicht, dass Ihre Syntax korrekt ist, müssen den Ausdruck in JSON umbrechen, dann legen Sie sie in Array. wie: '[getFieldClass (entry.entry_type_id), {'used': entry_map [entry.guid]> 0}]' – Dong

+0

Ja. Ich vermisste. Danke für das Aufzeigen. Ich habe auch Live-Beispiel aktualisiert – rajagopalx