2016-04-05 8 views
0

Ich versuche, Kontrollkästchen mit Beschriftungen basierend auf bedingten Flag dynamisch anzuzeigen. Die Labelwerte sind wie folgt:Dynamisch Anzeige Kontrollkästchen mit ng-repeat basierend auf Bedingung

$scope.listA = [ 
    { 
    name : "Sample 1" 
    }, 
    { 
    name : "Sample 2" 
    } 
]; 
$scope.listB = [ 
    { 
    name : "Result 1" 
    }, 
    { 
    name : "Result 2" 
    }, 
    { 
    name : "Result 3" 
    } 
]; 

Dies ist der HTML ich verwende.

<input type="checkbox" ng-repeat="item in listA"/>{{item.name}} 

Ich habe eine Variable basierend auf dem ich brauche entweder $ scope.listA oder $ scope.listB anzuzeigen.

var mode = "A"; 

Wenn Modus = A dann muss ich ListA als Kontrollkästchen Etiketten anzeigen. Wenn es etwas anderes gibt, dann muss ich listB als Checkbox-Label anzeigen.

Wie kann ich das tun? Und wie kann ich die Checkboxen standardmäßig aktivieren?

Antwort

1

Verwenden Sie eine Funktion, um die angezeigten Werte und nicht die Liste direkt anzuzeigen. Gefällt Ihnen dieses

<input type="checkbox" ng-repeat="item in whichItems()"/> 


$scope.whichItems = function() { 
    var ret = listA; 
    if($scope.mode != 'A') { 
     ret = listB; 
    } 
    return ret; 
}; 

EDIT: Um auf ein Array binden Sie werden einen gemeinsamen Wert in der Datenstruktur haben müssen und dass binden. Zum Beispiel:

var mydata = [{itemLabel:'item1',selected:false}, {itemLabel:'item2', selected:false}] 

und dann in der Checkbox haben Sie

<div ng-repeat="item in whichItems()"> 
     <input type="checkbox" ng-model="item.selected">{{item.itemLabel}} 
    </div> 
+0

geprüft zu machen Und zusätzlich: füge ein umgebendes div (oder span oder label) um dein checkbox und label hinzu und setze ngRepeat auf dieses div. Ansonsten werden nur die Checkboxen wiederholt und nicht das Label. – JanP

+0

Wie kann ich ein ng-Modell für jede Eingabe als wahr (für überprüft) und falsch (für nicht überprüft) ?? –

0

Scotts Antwort in Bezug auf die Array-Auswahl korrekt ist. Ihre Checkbox standardmäßig Verwendung ng-geprüft, ob das Kontrollkästchen aktiviert ist mit einem Ausdruck

<input type="checkbox" ng-checked="expression">

oder die geprüfte Eigenschaft, wenn Sie wollen es immer geprüft werden standardmäßig

<input type="checkbox" checked> 
Verwandte Themen