【问题标题】:Finding which checkbox is clicked or checked in nested ng-repeat AngularJS查找在嵌套的 ng-repeat AngularJS 中单击或选中了哪个复选框
【发布时间】:2015-12-28 03:04:55
【问题描述】:

我有一个父复选框列表以及每个父复选框内的子复选框列表。

父复选框附加 data-info="category" 属性,子复选框附加 data-info="name" 属性。

选中和取消选中父复选框,子复选框列表分别可见和隐藏

我想要的是,当我取消选中父复选框时,所有 subchkbx 也应该取消选中。仅未选中未选中的场景。

另外,我想访问选中复选框的 data-info 属性。如何在选中复选框时获取此属性。

目前我正在 jquery 的帮助下实现这一目标。

【问题讨论】:

    标签: angularjs checkbox angularjs-ng-repeat


    【解决方案1】:

    您可以将复选框绑定到父项目上的检查属性,然后设置 @987654321 @:当检查属性更改时,更新孩子的检查属性。

    var app = angular.module('app', []);
    app.controller('ctrl', function($scope) {
      $scope.parents = [
        { 
          name: 'parent1',
          checked: false,
          children: [{
            name: 'child1',
            checked: false
          },
          {
            name: 'child2',
            checked: false
          }]
        }];
      
        angular.forEach($scope.parents, function(item,index) {
          $scope.$watchCollection('parents[' + index + ']', function(newVal) {
              if (newVal) {
                angular.forEach(newVal.children, function(item, index) {
                  item.checked = newVal.checked;
                });
              }
          });
        });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <div ng-app="app" ng-controller="ctrl">
      <div ng-repeat="parent in parents">
        <input type="checkbox" ng-model="parent.checked" /> {{parent.name}}
        <ul>
          <li ng-repeat="child in parent.children">
             <input type="checkbox" ng-model="child.checked" /> {{child.name}}
          </li>
        </ul>
      </div>
    </div>

    【讨论】:

    • 实际上复选框的名称是通过服务器的 ajax 来的,所以我不能在我的 json 中放置一个选中的字段。同样 forEach 里面的 forEach 很重,很复杂,您的代码还在检查父复选框时检查所有子复选框。像 juery 一样,没有任何类型的 $('input[type='checkbox']").attr('checked', false); 只有一行代码,以便我使用 jquery 选择父级内的所有子复选框并设置选中属性为false。这只是一行的事情,而且更简单
    • jquery vs angularjs,你选择使用 jQuery...祝你好运:)
    • 不,我没有选择 jquery,只是我必须使用 jquery,因为我无法使用 angular 执行我想要的事情,而在 jquery 中它只是一行代码。我想用角度做那种事情,这就是在这里发布我的问题的重点。请帮助或建议我一个好方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2014-06-09
    • 2015-11-14
    • 2015-05-07
    • 2015-04-10
    • 1970-01-01
    • 2015-01-24
    相关资源
    最近更新 更多