javascript - 如何在 ng-repeat 循环中初始化输入复选框的 ng-model

标签 javascript angularjs checkbox coffeescript

我在创建多个 input[checkbox]es 时遇到了问题使用 ng-repeat 并附加 ng-model 的 Angular 项目列表:

<li ng-repeat="item in items"> 
  <a ng-href="#/{{item.id}}" > {{ item.id }} </a>
  <input type="checkbox" ng-model="selectedMessages[item.id]"/>
</li>

这里的问题是 selectedMessages[item.id] 仅在复选框被单击一次初始化和设置。

这是必要的原因是我想用一个命令切换所有复选框,如下所示:

$scope.toggleCheckboxes = (state) ->
  for key, val of $scope.selectedMessages
    $scope.selectedMessages[key] = state  # true or false

假设我有 3 个复选框,点击 1 一次,点击 2 两次,点击 3 从不点击,那么上述对象将如下所示:

$scope.selectedMessages = {
    "1" : true,
    "2" : false
  }

很明显,$scope.toggleCheckboxes(true) 仅适用于那些复选框。

有没有好的方法来为多个复选框初始化这个 ng-model?

最佳答案

您可以使用 ng-init 来填充数组。我使用了 $index 而不是用 id 属性组成一堆数据......相应地调整你的代码

<input type="checkbox" 
     ng-model="selectedMessages[$index]"
     ng-init="selectedMessages[$index]=selectedMessages[$index]||false" />

JS

  $scope.selectedMessages=[];
  $scope.checkAll=function(){
    var msgs = $scope.selectedMessages
    msgs.forEach(function(elem, idx){
      msgs[idx] =true
    })
  }

DEMO

关于javascript - 如何在 ng-repeat 循环中初始化输入复选框的 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127238/

相关文章:

javascript - 使倒计时器显示模态窗口 Bootstrap

jquery - 在 AngularJS 中的 JQuery 中使用变量

javascript - 关于“AngularJS 与 Plupload 一起使用”的一些问题

android - 如何检查所有复选框都在按钮上选中单击在android中

jquery - 提交按钮呈灰色,直到复选框被勾选为止?

javascript - JS - 使用正则表达式在数组键中查找匹配项

javascript "basic Object Oriented",回调,并且对此感到头疼,希望是一个很好的例子

caching - Angularjs:$cacheFactory 的日期到期

css - 单选按钮样式

java - 理解 json