AngularJS中带有数组模型的复选框

时间:2017-03-10 16:22:59

标签: angularjs checkbox model

以下是我的复选框:

<input type="checkbox" ng-model="data.lang[0]" id="FR" ng-true-value="'FR'" ng-false-value="''"  checked/>FR
<input type="checkbox" ng-model="data.lang[1]" id="NL" ng-true-value="'NL'" ng-false-value="''" />NL
<input type="checkbox" ng-model="data.lang[2]" id="EN" ng-true-value="'EN'" ng-false-value="''" />EN

我想检查一种语言并更新我的模型&data;朗&&#39;

但我有一个问题:

If second checkbox is checked i have :
   [null,"NL"]
If the third is checked i have :
   [null,null,'EN']

我需要拥有什么:

If second checkbox is checked :
    ['NL']
If second and third are checked :
    ['NL','EN']
If all are checked :
    ['FR','NL','EN']

我不知道如何像我想要的那样更新我的模型你能帮助我吗?感谢

2 个答案:

答案 0 :(得分:2)

更改您的数据结构并重复输入您的输入,类似于以下内容。

$scope.langs = [
  {
    val: 'en',
    checked: false
  }
]

<input type="checkbox" ng-repeat="lang in langs" ng-model="lang.checked">{{lang.val}}</input>

然后执行以下操作:

$scope.sendMyData() {
  $scope.langs.forEach(function(item) {
    if (item.checked) $scope.myData.push(item.value);
  });
}

答案 1 :(得分:0)

这是因为您的data.lang[]长度为3.即如果有一个值,则其他值为null

尝试使用ng-repeat,这样就可以了。