2016-09-05 8 views
2

ich zur Zeit den folgenden Ausdruck in ng-class hat, in der Sicht eines AngularUI Bootstrap modal:AngularJS ngClass Ausdruck und Array-Kombination

<div class="modal-body mdl-body" 
    ng-class="{ 'is-msg': vm.message.type == 'msg', 
       'height-limit': vm.message.hasHeight }"> 

Aber ich mag auch eine Reihe von benutzerdefinierten Klassen, wie dies passiert:

ng-class="vm.message.classes" 

Dies ist, wo die modale in Controller genannt wird:

modalService.open({ 
    type: "okay", 
    title: "Terms & Conditions", 
    content: $scope.APISettingData.signup_term_and_condition, 
    classes: ["h-md", "text-info"], 
    isHtml: true, 
    hasHeight: true 
}); 

Beide Wege funktionieren ohne einander, aber sie haben nicht funktioniert, als ich versuchte, sie zu kombinieren.

Ist es möglich, dies zu tun? Bitte geben Sie mir einige Ideen und Lösungen.

+1

eine Idee, die Sie könnten versuchen, ist ein anderen Behälter zu schaffen, innerhalb oder außerhalb ... nicht die beste Lösung, obwohl –

+1

'ng-Klasse 'ist ziemlich einfache Richtlinie, Sie können immer Ihre eigenen, das macht genau das, was Sie wollen. Akzeptiert Arrays oder was auch immer. –

Antwort

1

Es ist besser, wenn die ng-Klasse einer Variablen in scope zugewiesen ist. d. h. ng-class = customClasses

und in der controller etwas ähnliches. Dadurch haben Sie vollständige Kontrolle darüber, welche Klassen auf das Modal angewendet werden müssen.

EDIT: Aktivieren Sie diese Beispielanwendung in plnkr

$scope.customClasses = { 
    'is-msg': $scope.message.type == 'msg', 
    'height-limit': $scope.message.hasHeight, 
    "h-md" : true, 
    "text-info": true 
}; 
+0

Wir müssen noch die Klassen vordefinieren, ich möchte jede Klasse, die ich möchte, bestehen. – Nhan

+0

'Ich möchte jede Klasse, die ich will, bestehen 'was bedeutet das eigentlich? –

+0

Missverstanden, ich verstehe, was Sie meinen, aber ich brauche die Ausdrücke zu verwenden, sie werden in anderen Teilen der Anwendung benötigt. – Nhan