我在这里引用该文档:ng-checked
此处,在页面底部提供的示例中,您可以看到单击第一个复选框也会检查第二个框。
我发现的行为是,即使选中第一个复选框,也可以取消选中第二个复选框 - 也就是说,在选中第一个复选框(主复选框)后,第二个复选框会自动检查。如果您现在尝试取消选中第二个复选框,那么我觉得很奇怪。 ng-checked
指令绑定到仍为master
的{{1}}模型。
为什么可以取消选中第二个框? true
不应该确保检查状态始终与表达式同步 - 也就是说,只要第一个复选框仍然被选中,ng-checked NOT不允许取消选中第二个复选框?
只要选中master复选框,如何设置检查第二个框?
参考代码:
ng-checked
答案 0 :(得分:1)
ng-checked指令可能(我没有检查Angular源代码)在master
属性上设置$ watch。只有当该属性发生变化时,才会触发$ watch。因此,当您更改slave复选框时,$ watch不会触发,因此会发生更改。
如果您想让第二个复选框与第一个复选框保持同步,请将ng-model添加到奴隶,
<input type="checkbox" ng-model="slave" ng-checked="master">
然后在模型更改的任何时候强制同步:
$scope.$watch(
function() { return $scope.master + $scope.slave; }
,function() { $scope.slave = $scope.master; }
);
请注意,这也可以:
$scope.$watch('master + slave', function() {
$scope.slave = $scope.master;
});