2015-06-22 7 views
6

Ich möchte Komma getrennte Zeichenfolge von ausgewählten Kontrollkästchen in angularJS erhalten. Zur gleichen Zeit, wenn eine durch Komma getrennte Zeichenfolge aus der Datenbank abgerufen wird, möchte ich, dass die Kontrollkästchen entsprechend geprüft werden.AngularJS Multi-Auswahl Kontrollkästchen speichert in Komma getrennt String

<div class="col-md-5"> 
    <input type="checkbox" ng-model="Drawings.CarMDrawings" ng-change="Update(Drawings)"> Car 
    <br /> 

    <input type="checkbox" ng-model="Drawings.SignalMDrawings" ng-change="Update(Drawings)"> Signal 
    <br /> 

    <input type="checkbox" ng-model="Drawings.DoorMDawings" ng-change="Update(Drawings)"> Door 
    <br /> 

    </div> 

ich das Problem in sehr simple Art und Weise gelöst haben, ist Plunker http://plnkr.co/edit/YYd5bN5Chmyjt6gSH1Bw?p=preview

$scope.Update = function(Drawings) { 
    var str = ""; 
    if (Drawings.CarMDrawings) { 
     str = "Car"; 
    } 
    if (Drawings.SignalMDrawings) { 
     str = str + ",Signal"; 
    } 
    if (Drawings.DoorMDawings) { 
     str = str + ",Door"; 
    } 
    if (str.charAt(0) === ',') { 
     str = str.substr(1); 
    } 
    $scope.data = str; 
    } 

    $scope.revUpdate = function(data) { 
    var str = data; 
    $scope.Drawings = {}; 
    if (str.indexOf('Car') != -1) { 

     $scope.Drawings.CarMDrawings = true; 
    } 
    if (str.indexOf('Signal') != -1) { 

     $scope.Drawings.SignalMDrawings = true; 
    } 
    if (str.indexOf('Door') != -1) { 

     $scope.Drawings.DoorMDawings = true; 
    } 

}

Aber es ist nicht hilfreich, wenn ich viele ähnliche Produkte haben. Könnte mir jemand helfen, eine Direktive oder Erweiterung zu erstellen, damit ich sie häufig wiederverwenden kann? P.S. Ich möchte kein Array von Objekten, sondern einfache durch Kommas getrennte String-Elemente.

Antwort

0

Wenn Sie 'indexOf' verwenden, erhalten Sie viele Müllobjekte, die Text enthalten, was Sie suchen möchten.

Also ich denke, das ist der nächste Weg, um genauere Werte zu erhalten.

if (new RegExp("\\b"+"Car"+"\\b").test(str)) { 
    $scope.Drawings.CarMDrawings = true; 
} 

var str="test ,Car ,test"; //true 
var str="test, Car, test"; //true 
var str="test Cartest";  //false 
var str="testCar test";  //false 

Vielleicht ist die sehr späte Antwort, aber ich hoffe, dass dies für Ihre Absicht ist richtig,

und nützlich für andere Menschen, die dies aussehen. :)