ng-model第一次没有更新

时间:2014-12-17 18:59:06

标签: javascript angularjs

我有一个与ng-model绑定的复选框:

<input type="checkbox" ng-change="toggleAll(globalChecked)" ng-model="globalChecked">

而toggleAll将获取globalChecked值并处理我的控制器中的其他逻辑:

$scope.toggleAll = function(val) {
    if ($scope.objects == undefined) {
        return
    }

    for (var i = 0; i < $scope.objects.length; ++i) {
        $scope.objects[i].checked = val;
    }
}

然而,对于第一次,当我单击复选框时,toggleAll被调用但val(或globalChecked值)仍为false。

我想知道我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

似乎你没有错过任何东西,它对我来说很好。这是一个样本plunker:

http://plnkr.co/edit/BbVs7pEEFGTunXVkxCMj?p=preview

如果第一次没有效果,请务必初始化代码中第一个复选框(ng-model="globalChecked")的值。

  <input type='checkbox' ng-click="checkAll(toplevel)" ng-model="toplevel">
  <div ng-repeat="obj in objects">
    <input type='checkbox' ng-model="obj.checked">
  </div>
$scope.objects = [];

for(var i = 0; i < 100; i++) {
  if (!$scope.objects[i])
    $scope.objects[i] = {checked: false};
}

$scope.checkAll = function(val){
  for(var i = 0; i < 100; i++){
    console.log($scope.objects[i]);
    $scope.objects[i].checked = val;
  }
}