无法刷新Angularjs中的ng-repeat

时间:2017-11-08 19:11:10

标签: javascript angularjs html5

我正在尝试使用一个函数来检查复选框树中的所有复选框。 它是成功检查和取消选中,但是如果我选择一个复选框然后按全部检查,并取消选中,则单个复选框保持原样冻结

HTML

<fieldset id="field3">
  <table>
    <tr ng-repeat="e in empdepts | groupBy:'dep_LDesc'">
      <td>
        <label ng-click="showContent = !showContent"></label>
        <details ng-open="showContent">
          <summary>
            <input type="checkbox" ng-model="chk" /> {{e[0].dep_LDesc}}</summary>
          <div ng-repeat="employee in e">
            <input type="checkbox" ng-checked="chk"> {{employee.Sname}}
          </div>
        </details>
      </td>
    </tr>
  </table>
  <hr />
  <table>
    <tr>
      <td>
        <input type="checkbox" ng-model="all" ng-click="selectall(all)" /> All Departments</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" ng-model="self" /> Self Services </td>
    </tr>
  </table>
</fieldset>

控制器

$scope.selectall = function (all) {
    if (all) {
        $scope.chk = true;
    }
    else
    {
        $scope.chk = false;
    }
}

LoadEmpDepts();

function LoadEmpDepts() {
    Assignments.getempdepts().then(function (response) {
        $scope.empdepts = (response.data);
        console.log($scope.empdepts);
    })
}

enter image description here

1 个答案:

答案 0 :(得分:2)

您需要为单个元素设置checked属性,因此选项是在数组的每个元素中都有一个checked属性。

所以每当选中复选框时都会更新属性。并且在检查所有内容时,将所有元素选中属性设为true。

{{1}}

例如,

<强> DEMO