将值保存到AngularJS中ng-repeat内的复选框上的数组中

时间:2017-08-07 06:30:42

标签: javascript angularjs arrays angularjs-ng-repeat

我有一个场景,当我在ng-repeat中选中复选框时,我必须将值放在数组中。

<li ng-repeat="player in team.players">
  <div class="row">
     <div class="col-md-3 m-t-xs">
       <input type="checkbox" ng-model="vm.newEvent.players[$index].selected" ng-change="vm.selectPlayer($index, player)"> {{player.name}}
     </div>
     <div class="col-md-5 m-t-xs">
        <label for="">
         <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="injured"> Injured
        </label>
        <label for="">
         <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="sick"> Sick
        </label>
        <label for="">
         <input type="radio" name="{{player.id}}" ng-change="vm.disSelectPlayer($index, player)" ng-model="vm.newEvent.players[$index].casuality.type" value="other"> Other
        </label>
     </div>
  </div>
</li>

这就是浏览器现在的样子。

enter image description here

问题在于,当我点击 FC Barcelona Accordion 中的任何一个玩家名称时,它也会从 FC Bayern Munich Accordion 中选择相同的索引玩家,我想要的是保持所有球员彼此分开。 我错过了绑定中的东西吗?

3 个答案:

答案 0 :(得分:2)

使用checklist-model,AngularJS指令获取复选框列表

在Angular中,复选框<input type="checkbox" ng-model="...">与一个模型链接。但在实践中,我们通常希望一个模型存储来自多个复选框的已检查值数组。核对表模型在控制器中无需额外代码即可解决该任务。您应该使用<input type="checkbox"> tag:

的属性
  • 设置checklist-model而不是ng-model
  • 设置checklist-value - 应该选择什么作为数组项

Documentation

答案 1 :(得分:0)

这是因为这个功能:vm.disSelectPlayer($index, player)

我认为你必须在这里添加索引<li ng-repeat="player in team.players">,以便为每个玩家提供不同的ID或索引。

试试这个:  <li ng-repeat="(key ,player) in team.players">

并在您调用的函数中使用此Key: vm.disSelectPlayer($index, player , key)

我希望它有用:)

答案 2 :(得分:0)

这是因为在第4行你写了

ng-model="vm.newEvent.players[$index].selected".

你使用过父母对象即玩家,而不是你可以使用

ng-model="vm.player.selected".

OR

ng-model="vm.team.players[$index].selected".