2015-06-22 25 views
6

Chcę uzyskać ciąg znaków oddzielonych przecinkami od wybranych elementów pola wyboru w angularJS. W tym samym czasie, gdy ciąg oddzielający przecinkami jest pobierany z bazy danych, chcę aby pola wyboru były odpowiednio sprawdzane.Wielokrotne zaznaczanie pól wyboru AngularJS zapisuje w oddzielonym przecinkiem łańcuchu

<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> 

Mam rozwiązać ten problem w bardzo uproszczony sposób jest 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; 
    } 

}

Ale to nie jest pomocne, gdy mam wiele podobnych przedmiotów. Czy ktokolwiek mógłby mi pomóc w opracowaniu dyrektywy lub rozszerzenia, aby móc je często używać ponownie? P.S. Nie chcę tablica obiektów, ale proste elementy oddzielone przecinkami.

Odpowiedz

0

Jeśli użyjesz "indexOf", dostaniesz wiele śmieci, które zawierają tekst, który chcesz znaleźć.

Uważam, że jest to najbliżej położony sposób na uzyskanie bardziej precyzyjnej wartości.

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 

Może to jest odpowiedź bardzo późno, ale mam nadzieję, że jest to odpowiedni dla Twojej intencji,

i pomocne dla innych ludzi, którzy będą patrzeć to. :)