2015-06-22 40 views
6

我想从angularJS中的选定复选框项目中获取逗号分隔的字符串。同时,当从数据库中检索逗号分隔的字符串时,我希望相应地检查复选框。AngularJS多选复选框保存为逗号分隔字符串

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

}

但是,当我有很多相似的项目是没有帮助的。任何人都可以帮助我构建一个指令或扩展,以便我可以频繁地重用它们。 P.S.我不想要对象数组,但简单的逗号分隔的字符串项。

回答

0

如果你使用'indexOf',你会得到很多垃圾物品,包括你想要找到的文本。

所以我认为这是获得更精确价值的最接近的方法。

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 

也许这是非常晚的答案,但我希望这是适合你的意图,

,并有助于其他人谁就会看这个。 :)