2015-06-22 45 views
6

AngularJS'de seçili onay kutusu öğelerinden virgülle ayrılmış dize almak istiyorum. Aynı zamanda, virgülle ayrılmış dize veritabanından çıkarıldığında, onay kutularının da buna göre kontrol edilmesini istiyorum. Çok basit bir şekilde sorunu çözmüşAngularJS çoklu seçim onay kutuları virgülle ayrılmış dize kaydeder Dize

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

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

}

olduğu Ama birçok benzer öğeleri varsa o yararlı değildir. Herhangi biri, bir yönlendirici veya uzantı oluşturmama yardımcı olabilir, böylece onları sıklıkla tekrar kullanabilirim. P.S. Nesne dizisi istemiyorum ama basit virgülle ayrılmış dize öğeleri.

cevap

0

Eğer 'indexOf' kullanırsanız, bulmak istediğiniz metni içeren çok sayıda çöp kutusu elde edersiniz.

Bence bu daha kesin değer elde etmenin en yakın yolu.

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 

Belki bu çok geç cevap ama bu bakacağız diğer insanlar için, bu niyet için doğru

ve yararlı umuyoruz. :)